如何通过Google Apps Script在生成新幻灯片前删除Google Slides第n张后幻灯片
在生成新幻灯片前删除Google Slides指定位置后的所有幻灯片
我有一段Google Apps Script代码,可以从Google Sheets更新Google Slides演示文稿内容,目前运行正常。现在希望每次运行脚本时,在添加新幻灯片前删除演示文稿中第n张之后的所有现有幻灯片,请问是否可行?
修改后的完整代码
function createOneSlidePerRow() { // 替换为你的Google Slides演示文稿ID let masterDeckID = "INSERT_SLIDE_DECK_ID"; // 打开演示文稿并获取所有幻灯片 let deck = SlidesApp.openById(masterDeckID); let slides = deck.getSlides(); // -------------------------- 新增删除逻辑 -------------------------- // 定义要保留的最后一张幻灯片的索引(数组从0开始,比如保留前3张则设为2) const keepUpToIndex = 2; // 从最后一张开始倒序删除,避免索引错乱 for (let i = slides.length - 1; i > keepUpToIndex; i--) { slides[i].remove(); } // 更新slides数组,确保后续获取的是最新的幻灯片列表 slides = deck.getSlides(); // -------------------------- 新增结束 -------------------------- // 第3张幻灯片是模板(对应索引2),将为表格每一行复制一次 let masterSlide = slides[2]; // 从表格加载数据 let dataRange = SpreadsheetApp.getActive().getSheetByName('Sheet2').getDataRange(); let sheetContents = dataRange.getValues(); // 保存表头 let header = sheetContents.shift(); // 创建数组用于保存要写回表格的数据(包含幻灯片链接) let updatedContents = []; // 反转行顺序,因为新幻灯片会插入到模板上方,避免幻灯片顺序和表格行顺序相反 sheetContents.reverse(); // 遍历每一行,复制模板幻灯片并填充数据 sheetContents.forEach(function (row) { // 复制模板幻灯片生成新幻灯片 let slide = masterSlide.duplicate(); // 替换幻灯片中的模板变量 slide.replaceAllText("{{test1}}", row[0]); slide.replaceAllText("{{test2}}", row[1]); slide.replaceAllText("{{test3}}", row[2]); // 生成新幻灯片的链接 let slideUrl = `https://docs.google.com/presentation/d/${deck.getId()}/edit#slide=id.${slide.getObjectId()}`; // 将链接添加到行的第4列,并加入更新数组 row[3] = slideUrl; updatedContents.push(row); }); // 把表头加回数组 updatedContents.push(header); // 反转数组以恢复表格原有的行顺序 updatedContents.reverse(); // 将更新后的数据写回Google Sheets dataRange.setValues(updatedContents); // 如果不需要保留模板幻灯片,可以取消下面一行的注释 //masterSlide.remove(); }
关键逻辑说明
删除规则配置:
通过keepUpToIndex变量指定要保留的最后一张幻灯片的索引(数组从0开始计数)。例如:- 设为
2表示保留第1-3张幻灯片,删除第4张及之后的所有内容 - 若要保留前2张幻灯片,将值改为
1即可
- 设为
倒序删除原因:
采用从最后一张幻灯片往前删的方式,避免因删除前面的幻灯片导致后续索引位置错乱,确保所有目标幻灯片都能被正确删除注意事项:
请确保模板幻灯片(代码中为索引2的第3张)被包含在保留范围内,否则后续无法复制模板生成新幻灯片
内容的提问来源于stack exchange,提问作者Mee
相关产品推荐
相关产品推荐

