gpt4 book ai didi

javascript - 使用 Google Apps 脚本从母版幻灯片台复制多张幻灯片

转载 作者:行者123 更新时间:2023-12-02 02:59:58 24 4
gpt4 key购买 nike

我创建了一个代码来替换谷歌幻灯片上的占位符。这个项目的起点是谷歌表单。提交谷歌表单后,谷歌表单中的相关数据就会输入到谷歌幻灯片模板中。请参阅下面的代码。我希望在表单上创建一个问题,人们可以在其中选择要包含的多张幻灯片(例如,从 10 张中选择 2 张凭证幻灯片)

function PoD() {

SpreadsheetApp.getActiveSpreadsheet().getSheetByName("A-PoD").activate();

var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lr = ss.getLastRow()

for (var i =2;i<lr;i++){

if(ss.getRange(i, 1).getValue()){

//Make a copy of the template file
var documentId = DriveApp.getFileById('1REHMrl6kfzXbgSipvBDkNitkfsM8tJsUSAICggxNsHw').makeCopy().getId();

var Name_of_programme = ss.getRange(i, 2).getValue();

DriveApp.getFileById(documentId).setName("PwC's Academy_"+Name_of_client+"_"+Name_of_programme+"_"+Month);

var FileName = Name_of_programme;

//Get the document body as a variable
var body = SlidesApp.openById(documentId);

body.replaceAllText('{Name of programme}', Name_of_programme);


var lastSlide = body.getSlides();
lastSlide[5].remove();

我希望继续编写脚本以包含选择多张幻灯片的功能。我看到下面的脚本来复制一张幻灯片,但无法弄清楚如何轻松复制多张幻灯片。

var srcPresentationId = "### source fileId ###";
var copysrcSlideIndex = 0; // 0 means page 1.

var copydstSlideIndex = 0; // 0 means page 1.

var src = SlidesApp.openById(srcPresentationId).getSlides()[copysrcSlideIndex];
SlidesApp.getActivePresentation().insertSlide(copydstSlideIndex, src);

我想让人们选择将哪些幻灯片包含在 Google 表单中作为多项选择。

在脚本的后端,我是否需要将幻灯片名称与幻灯片编号进行映射?或者可以在每张幻灯片的文本框中包含唯一的引用,然后选择相关幻灯片?在这里大声思考。任何指导将不胜感激。

最佳答案

  • 您想要将主 Google 幻灯片中的第 5、7 和 9 页(索引为 4、6 和 8)复制到其他 Google 幻灯片。
  • 您希望使用 Google Apps 脚本来实现此目的。

我可以像上面那样理解。如果我的理解是正确的,这个答案怎么样?请将此视为几个可能答案之一。

流程:

  1. 从 Google 幻灯片母版中检索所有幻灯片。
  2. 将所需幻灯片复制到循环中的目标 Google 幻灯片。

模式 1:

示例脚本:

在运行脚本之前,请设置变量。

function myFunction() {
var copyPageNumbers = [5, 7, 9]; // Please set the page number. This is not the index. So the 1st page is 1.
var masterGoogleSlidesId = "###"; // Please set the master Google Slides ID.
var destinationGoogleSlidesId = "###"; // Please set the destination Google Slides ID.
var offset = 1;

var src = SlidesApp.openById(masterGoogleSlidesId);
var dst = SlidesApp.openById(destinationGoogleSlidesId);
var slides = src.getSlides();
var page = 0;
slides.forEach(function(slide, i) {
if (copyPageNumbers.indexOf(i + 1) != -1) {
dst.insertSlide(offset + page, slide);
page++;
}
});
}

模式 2:

示例脚本:

function myFunction() {
var copyPageNumbers = [5, 7, 9]; // Please set the page number. This is not the index. So the 1st page is 1.
var masterGoogleSlidesId = "###"; // Please set the master Google Slides ID.
var destinationGoogleSlidesId = "###"; // Please set the destination Google Slides ID.
var offset = 1;

var src = SlidesApp.openById(masterGoogleSlidesId);
var dst = SlidesApp.openById(destinationGoogleSlidesId);
var slides = src.getSlides();
copyPageNumbers.forEach(function(p, i) {
dst.insertSlide(offset + i, slides[p - 1]);
});
}

注意:

  • 在这两种模式中,主 Google 幻灯片的第 5、7 和 9 页都是从目标 Google 幻灯片的第 2 页复制的。
    • 当使用 var offset = 0 时,主 Google 幻灯片的第 5、7 和 9 页将从目标 Google 幻灯片的第 1 页复制。

引用:

关于javascript - 使用 Google Apps 脚本从母版幻灯片台复制多张幻灯片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60196682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com