合并 Google 个幻灯片
Consolidating Google Slides
我正在构建一个小应用程序来整合 Google Drive 中的幻灯片。
在大多数情况下,该应用程序运行良好。但是,当我附加幻灯片时,它只会添加第一张幻灯片。
currentPresentation.appendSlide(org1Slides.getSlides()[0]);
显然它只是 returns 第一张幻灯片,因为 [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]);
};
经过几个小时的文档挖掘,我解决了这个问题。
openById() 函数不return 幻灯片列表。使用 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]);
}
我正在构建一个小应用程序来整合 Google Drive 中的幻灯片。
在大多数情况下,该应用程序运行良好。但是,当我附加幻灯片时,它只会添加第一张幻灯片。
currentPresentation.appendSlide(org1Slides.getSlides()[0]);
显然它只是 returns 第一张幻灯片,因为 [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]);
};
经过几个小时的文档挖掘,我解决了这个问题。
openById() 函数不return 幻灯片列表。使用 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]);
}