使用 google 脚本将 google 驾驶视频插入 google 幻灯片
Insert a google drive video into a google slide using google script
我有一个包含图像和视频的 google 驱动器文件夹。使用 google 脚本,我想从这些文件生成 google 幻灯片演示文稿。
在此之后使用图像效果很好tutorial。
不知道如何 insert/embed 视频。我试过使用 insertVideo 方法,但失败了,因为它需要一个与驱动器的文件对象类型不对应的视频对象。
我很好奇是否有人找到了实现它的方法。感谢任何帮助,谢谢!
var deck = SlidesApp.create('My Slides');
function addAsset(assetFile) {
var slide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK);
if (assetFile.getMimeType().startsWith('image')) {
slide.insertImage(assetFile);
} else {
slide.insertVideo(assetFile);
}
}
function main() {
var folder = DriveApp.getFoldersByName('my assets').next();
var files = folder.getFiles();
while (files.hasNext()) {
var file = files.next();
addAsset(file);
}
}
问题和解决方法:
我认为你的问题的原因是文件不能直接用于insertVideo
。 insertVideo 的参数是 URL 和 Google Slides 的视频对象。我认为你的问题的原因是由于这个。
关于URL的说法,目前看来,使用insertVideo
的方法时,视频内容要求是URL的公开分享的 YouTube。
根据上述情况,作为解决您问题的解决方法,我想提出以下 3 种模式。
模式 1:
在此模式中,首先会创建一个包含视频内容的新 Google 幻灯片。在这种情况下,需要手动将视频放到新的 Google Slides 中。并且,此幻灯片用作模板幻灯片。当你想把视频内容放到你要使用的Google Slides中时,使用脚本模板Slides的视频内容。这样,您的目标可以使用 insertVideo
.
实现
模式二:
在这种模式下,首先,您要使用的所有视频都被手动放到 YouTube 上。当你想把视频内容放到你想使用的 Google 幻灯片中时,使用脚本使用 YouTube 的视频内容。这样,您的目标可以使用 insertVideo
.
实现
模式 3:
在此模式中,使用幻灯片 API。当使用Slides API 时,Google Drive 上的文件可以使用文件ID 直接放入Google Slides。当你的脚本修改后,就变成了下面这样。这用于此解决方法。在使用此脚本之前,please enable Slides API at Advanced Google services.
function main() {
var deck = SlidesApp.create('My Slides');
var slide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK);
deck.saveAndClose();
deck = SlidesApp.openById(deck.getId());
slide = deck.getSlides()[1];
var pageObjectId = slide.getObjectId();
var folder = DriveApp.getFoldersByName('my assets').next();
var files = folder.getFiles();
var videos = [];
while (files.hasNext()) {
var file = files.next();
if (file.getMimeType().startsWith('image')) {
slide.insertImage(file);
} else if (file.getMimeType().startsWith("video")) {
videos.push({createVideo: {source: "DRIVE", id: file.getId(), elementProperties: {pageObjectId: pageObjectId}}});
}
}
if (videos.length > 0) {
Slides.Presentations.batchUpdate({requests: videos}, deck.getId());
}
}
参考文献:
我有一个包含图像和视频的 google 驱动器文件夹。使用 google 脚本,我想从这些文件生成 google 幻灯片演示文稿。
在此之后使用图像效果很好tutorial。
不知道如何 insert/embed 视频。我试过使用 insertVideo 方法,但失败了,因为它需要一个与驱动器的文件对象类型不对应的视频对象。
我很好奇是否有人找到了实现它的方法。感谢任何帮助,谢谢!
var deck = SlidesApp.create('My Slides');
function addAsset(assetFile) {
var slide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK);
if (assetFile.getMimeType().startsWith('image')) {
slide.insertImage(assetFile);
} else {
slide.insertVideo(assetFile);
}
}
function main() {
var folder = DriveApp.getFoldersByName('my assets').next();
var files = folder.getFiles();
while (files.hasNext()) {
var file = files.next();
addAsset(file);
}
}
问题和解决方法:
我认为你的问题的原因是文件不能直接用于insertVideo
。 insertVideo 的参数是 URL 和 Google Slides 的视频对象。我认为你的问题的原因是由于这个。
关于URL的说法,目前看来,使用insertVideo
的方法时,视频内容要求是URL的公开分享的 YouTube。
根据上述情况,作为解决您问题的解决方法,我想提出以下 3 种模式。
模式 1:
在此模式中,首先会创建一个包含视频内容的新 Google 幻灯片。在这种情况下,需要手动将视频放到新的 Google Slides 中。并且,此幻灯片用作模板幻灯片。当你想把视频内容放到你要使用的Google Slides中时,使用脚本模板Slides的视频内容。这样,您的目标可以使用 insertVideo
.
模式二:
在这种模式下,首先,您要使用的所有视频都被手动放到 YouTube 上。当你想把视频内容放到你想使用的 Google 幻灯片中时,使用脚本使用 YouTube 的视频内容。这样,您的目标可以使用 insertVideo
.
模式 3:
在此模式中,使用幻灯片 API。当使用Slides API 时,Google Drive 上的文件可以使用文件ID 直接放入Google Slides。当你的脚本修改后,就变成了下面这样。这用于此解决方法。在使用此脚本之前,please enable Slides API at Advanced Google services.
function main() {
var deck = SlidesApp.create('My Slides');
var slide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK);
deck.saveAndClose();
deck = SlidesApp.openById(deck.getId());
slide = deck.getSlides()[1];
var pageObjectId = slide.getObjectId();
var folder = DriveApp.getFoldersByName('my assets').next();
var files = folder.getFiles();
var videos = [];
while (files.hasNext()) {
var file = files.next();
if (file.getMimeType().startsWith('image')) {
slide.insertImage(file);
} else if (file.getMimeType().startsWith("video")) {
videos.push({createVideo: {source: "DRIVE", id: file.getId(), elementProperties: {pageObjectId: pageObjectId}}});
}
}
if (videos.length > 0) {
Slides.Presentations.batchUpdate({requests: videos}, deck.getId());
}
}