【问题标题】:Consolidating Google Slides合并 Google 幻灯片
【发布时间】:2020-07-25 01:33:13
【问题描述】:

我正在构建一个小应用程序来整合 Google Drive 中的幻灯片。

在大多数情况下,该应用运行良好。但是,当我附加幻灯片时,它只会添加第一张幻灯片。

currentPresentation.appendSlide(org1Slides.getSlides()[0]);

显然它只返回第一张幻灯片,因为 [0]。我尝试完全删除 [0] 和 .getSlides() [0] 部分,这会导致错误。我在文档中找不到列出多张幻灯片的方法。我也尝试过使用 for 循环的变体来拉出每张幻灯片,但我当前的代码被忽略了。

for (var i = 0; i < org1Slides.length; i++) {
  currentPresentation.appendSlide(org1Slides.getSlides()[i]);
}

for (slide in org1Slides) {
      currentPresentation.appendSlide(org1Slides.getSlides()[slide]);
    }

我确定我遗漏了一些小东西,但有人可以指出我在演示文稿中附加每张幻灯片的方向。

期望的结果是代码将整个幻灯片附加到整个演示文稿。每个演示文稿中的幻灯片数量是可变的,因此我不能简单地列出要单独附加的每张幻灯片。

完整代码:

function consolidateSlides() {
  // use the 'Org Base' slides as the baseline
  var presentationId = '{presentation id hidden}';
  
  // set current month, rename to current slide deck
  var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];;
  var date = new Date();
  var currentMonth = months[date.getMonth()] + ' ' + date.getFullYear();
  var copyTitle = 'Meeting ' + currentMonth;
  var copyFile = {
    title: copyTitle,
  };
  copyFile = Drive.Files.copy(copyFile, presentationId);

  // prepare current slide deck for appending org slides
  var currentPresentation = SlidesApp.openById(copyFile.id);
  
  // append org1 slides
  var org1Slides = SlidesApp.openById('{presentation id hidden}');
  currentPresentation.appendSlide(org1Slides.getSlides()[0]);
    
  // append org2 slides
  var org2Slides = SlidesApp.openById('{presentation id hidden});
  currentPresentation.appendSlide(org2Slides.getSlides()[0]);
  
  // append org3 slides
  var org3Slides = SlidesApp.openById('{presentation id hidden}');
  currentPresentation.appendSlide(org3Slides.getSlides()[0]);
  
  // append org4 slides
  var org4Slides = SlidesApp.openById('{presentation id hidden}');
  currentPresentation.appendSlide(org4Slides.getSlides()[0]);

  // append org5 slides
  var org5Slides = SlidesApp.openById('1{presentation id hidden}');
  currentPresentation.appendSlide(org5Slides.getSlides()[0]);

  // append org6 slides
  var org6Slides = SlidesApp.openById('{presentation id hidden}');
  currentPresentation.appendSlide(org6Slides.getSlides()[0]);

};

【问题讨论】:

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


    【解决方案1】:

    我在阅读文档几个小时后解决了这个问题。

    openById() 函数不返回幻灯片列表。使用 getSlides() 提供了一个幻灯片列表,for 循环可以通过该列表进行迭代。

    所以

      // append org1 slides
      var org1Slides = SlidesApp.openById('{presentation id hidden}');
      currentPresentation.appendSlide(org1Slides.getSlides()[0]);
    

    上交:

      // append org1 slides
      var org1Slides = SlidesApp.openById('{presentation id hidden}');
      var currentSlides = org1Slides.getSlides();
      for (slide in currentSlides) {
        currentPresentation.appendSlide(org1Slides.getSlides()[slide]);
      }
    

    【讨论】:

      猜你喜欢
      • 2023-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-23
      • 1970-01-01
      • 2015-04-21
      相关资源
      最近更新 更多