【问题标题】:Insert a google drive video into a google slide using google script使用谷歌脚本将谷歌驱动器视频插入谷歌幻灯片
【发布时间】:2020-11-03 23:40:39
【问题描述】:

我有一个包含图像和视频的 google 驱动器文件夹。使用谷歌脚本,我想从这些文件生成谷歌幻灯片演示。

tutorial 之后使用图像效果很好。

不知道如何插入/嵌入视频。我尝试使用 insertVideo 方法,但失败了,因为它需要一个与驱动器的 File 对象类型不对应的 Video 对象。

我很好奇是否有人找到了实现这一点的方法。任何帮助表示赞赏,谢谢!

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);
  }
}

【问题讨论】:

    标签: google-apps-script google-drive-api google-slides-api


    【解决方案1】:

    问题和解决方法:

    我认为您的问题的原因是该文件不能直接用于insertVideo。 insertVideo 的参数是 Google 幻灯片的 URL 和视频对象。我认为你的问题的原因是由于这个。

    关于argument的URL,现阶段好像是在使用insertVideo的方法时,要求视频内容是公开分享的YouTube的URL。

    根据上述情况,作为解决您的问题的解决方法,我想提出以下 3 种模式。

    模式一:

    在这种模式下,首先会创建一个包含视频内容的新 Google 幻灯片。在这种情况下,需要手动将视频放到新的 Google 幻灯片中。并且,此幻灯片用作模板幻灯片。当您想将视频内容放到您要使用的 Google Slides 中时,模板 Slides 的视频内容使用脚本来使用。这样,您可以使用insertVideo 来实现您的目标。

    模式2:

    在这种模式下,首先,您要使用的所有视频都被手动放到 YouTube 上。而当你想把视频内容放到你想使用的谷歌幻灯片上时,YouTube 的视频内容是使用脚本来使用的。这样,您可以使用insertVideo 来实现您的目标。

    模式 3:

    在此模式中,使用了 Slides API。使用 Slides API 时,可以使用文件 ID 将 Google Drive 上的文件直接放到 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());
      }
    }
    

    参考资料:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      相关资源
      最近更新 更多