You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 13:11:37