使用 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());
  }
}

参考文献: