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

通过AppScript实现Google Sheets行分组并生成Google Slides

Google Sheet数据按自定义分组规则导入Google Slides

需求概述

我有一份Google Sheet表格,需要将其中的数据导入Google Slides,并且支持灵活的行分组规则:

  • 可将A至C行分为一组生成单张幻灯片,D至F行分为另一组;
  • 也可将D和F行合并为一组,A至C行各自单独生成幻灯片。

目前已有逐行生成幻灯片的AppScript代码,运行正常,需要修改代码满足上述分组需求。

现有代码

function newPresentation() {
  let templateId = "XXX";
  let presentationTemplate = DriveApp.getFileById(templateId);
  let copy = presentationTemplate.makeCopy().getId();
  let deck = SlidesApp.openById(copy);
  let slides = deck.getSlides();
  let dataRange = SpreadsheetApp.getActive().getDataRange();

  const ar = ["{{item}}", "{{results}}"]; // Sample object for replacing the placeholders.
  const [, ...sheetContents] = dataRange.getDisplayValues();
  slides.forEach((slide, i) => ar.forEach((f, j) => slide.replaceAllText(f, sheetContents[i][j])));
}

修改方案(支持自定义分组)

通过定义分组配置数组实现灵活分组,每个分组元素指定要包含的行索引(从0开始,对应跳过表头后的数据行),再根据分组批量生成幻灯片:

修改后的代码

function newPresentationWithGroups() {
  // 配置项
  const templateId = "XXX"; // 替换为你的模板ID
  const placeholders = ["{{item}}", "{{results}}"]; // 模板中的占位符
  // 自定义分组规则:每个子数组代表一组,元素是sheetContents中的行索引(从0开始)
  // 示例1:A-C行(索引0-2)一组,D-F行(索引3-5)一组
  // const groups = [[0,1,2], [3,4,5]];
  // 示例2:A-C行各自单独一组,D和F行(索引3、5)一组
  const groups = [[0], [1], [2], [3,5]];

  // 复制模板并打开演示文稿
  const presentationTemplate = DriveApp.getFileById(templateId);
  const copy = presentationTemplate.makeCopy().getId();
  const deck = SlidesApp.openById(copy);
  const templateSlide = deck.getSlides()[0]; // 假设模板仅1张幻灯片作为生成模板

  // 获取Sheet数据(跳过表头)
  const dataRange = SpreadsheetApp.getActive().getDataRange();
  const [, ...sheetContents] = dataRange.getDisplayValues();

  // 遍历分组生成幻灯片
  groups.forEach(group => {
    // 复制模板幻灯片并移至末尾
    const newSlide = templateSlide.duplicate();
    deck.moveSlide(deck.getSlides().length - 1, newSlide);

    // 拼接分组内数据(可根据模板样式调整拼接逻辑,比如改为项目符号)
    const itemText = group.map(idx => sheetContents[idx][0]).join("\n");
    const resultsText = group.map(idx => sheetContents[idx][1]).join("\n");

    // 替换占位符
    newSlide.replaceAllText(placeholders[0], itemText);
    newSlide.replaceAllText(placeholders[1], resultsText);
  });

  // 删除原始模板幻灯片(可选,若不需要保留)
  templateSlide.remove();
}

代码说明

  • 分组配置:通过groups数组自定义分组规则,索引对应跳过表头后的表格数据行;
  • 幻灯片生成:基于模板幻灯片复制新幻灯片,每个分组对应一张;
  • 数据拼接:用换行符连接分组内数据,可根据模板格式改为项目符号、分栏等样式;
  • 占位符替换:将模板中的占位符替换为分组拼接后的内容。

使用说明

  1. 替换templateId为你的Google Slides模板ID;
  2. 调整groups数组为目标分组规则;
  3. 根据模板样式修改数据拼接逻辑;
  4. 运行newPresentationWithGroups函数即可生成符合分组要求的演示文稿。

内容的提问来源于stack exchange,提问作者Arif Ahmed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 16:07:39