将幻灯片从一个Google幻灯片演示文稿复制到另一个

时间:2017-10-18 04:04:58

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

我搜索了这个问题的正确答案,但是我无法想出任何关于SO的内容,所以我想我会发布一个新帖子。

我正在尝试使用带有谷歌应用脚​​本的高级幻灯片服务将一张幻灯片从Google幻灯片复制到另一张幻灯片。

function myFunction() {
  var originalPresentation = Slides.Presentations.get('1Lqtwb5z8NcU4VVj8OOR11AJyET70tlRRj6QIhxsEZZg');

  var slideToCopy = originalPresentation.slides[3];

  var newSlides = Slides.Presentations.create({
    title: 'New Slidedeck',
    slides: [slideToCopy]
  })
}

这会创建带有标题的幻灯片,但幻灯片不会被复制。 documentation表示您可以传递带有标题的幻灯片数组,但没有任何内容正在复制。它还需要大师和布局吗?我究竟做错了什么? 提前致谢。

2 个答案:

答案 0 :(得分:5)

你还在寻找复制幻灯片的方法吗?不幸的是,我确认使用脚本的Slides API的副本还不能完成。但我想到了一个解决方法。

以下解决方法如何?根据最近的Google更新,我注意到添加了Class SlidesApp。我用过这个。由于我没有找到将幻灯片直接复制到新幻灯片的方法,因此我使用了以下流程。

流程:

  1. 使用DriveApp复制幻灯片。
  2. 打开复制的幻灯片。
  3. 使用remove()删除要复制的幻灯片以外的幻灯片。
  4. 示例脚本:

    function myFunction() {
      var srcSlides = 3; // A page number of slide that you want to copy. In this case, the top number is 1.
    
      var srcid = "1Lqtwb5z8NcU4VVj8OOR11AJyET70tlRRj6QIhxsEZZg";
      var dstid = DriveApp.getFileById(srcid).makeCopy().getId();
      var dstSlides = SlidesApp.openById(dstid).getSlides();
      dstSlides.splice(srcSlides - 1, 1);
      for (var i in dstSlides) {
        dstSlides[i].remove();
      }
    }
    

    参考文献:

    如果这对你没用,我很抱歉。

    2018年2月16日更新

    February 13, 2018,幻灯片服务已更新。通过这种方式,复制幻灯片可以通过本机方法实现。

    此示例脚本从srcSlideId的第1页复制到活动幻灯片的第1页。

    示例脚本:

    var srcSlideId = "### source fileId ###";
    var copysrcSlideIndex = 0; // 0 means page 1.
    
    var copydstSlideIndex = 0; // 0 means page 1.
    
    var src = SlidesApp.openById(srcSlideId).getSlides()[copysrcSlideIndex];
    SlidesApp.getActivePresentation().insertSlide(copydstSlideIndex, src);
    

    参考:

答案 1 :(得分:1)

也许你正在寻找这个?

  var PresentationTEST = SlidesApp.openById(TEMPLATE_TEST);
  var PresentationTemplate = SlidesApp.openById(TEMPLATE_DEV);
  var slides = PresentationTemplate.getSlides();

  var slide = slides[0];
  var slide = PresentationTEST.appendSlide(slide);