如何实现Google Sheets更新时自动同步Google Slides链接对象?
自动更新Google Slides中来自Google Sheets的链接对象
你的现有脚本无法自动运行的核心问题是缺少触发机制,且仅处理了链接图表,未覆盖所有类型的Sheets链接对象。以下是完整的自动实现方案:
1. 完善后的自动更新脚本
这个脚本会更新Slides中所有来自Sheets的链接图表和嵌入表格:
function updateAllLinkedSheetObjects() { // 替换为你的Google Slides文档ID const slideDeckId = '你的Slides文档ID'; const presentation = SlidesApp.openById(slideDeckId); const slides = presentation.getSlides(); slides.forEach(slide => { // 更新链接的Sheets图表 const sheetCharts = slide.getSheetsCharts(); sheetCharts.forEach(chart => chart.refresh()); // 更新链接的Sheets嵌入表格 const sheetTables = slide.getSheetsTables(); sheetTables.forEach(table => table.refresh()); }); }
2. 设置自动触发机制
要让脚本在Sheets内容变更时自动运行,需在数据来源的Google Sheets文档中绑定触发器:
- 打开你的Sheets文档,点击「扩展程序」>「Apps脚本」
- 将上述脚本粘贴到代码编辑器,替换
slideDeckId为你的Slides文档ID(可从Slides的URL中获取) - 点击左侧菜单栏的「触发器」图标(闹钟样式)
- 点击「添加触发器」,配置以下选项:
- 选择函数:
updateAllLinkedSheetObjects - 事件源:「从电子表格」
- 事件类型:「更改时」
- 选择函数:
- 点击「保存」,按提示完成脚本权限授权(需选择「高级」>「转到XX脚本」完成授权)
3. 原有脚本的问题说明
- 未绑定触发器:脚本本身只是一个可手动调用的函数,没有关联Sheets的变更事件,因此无法自动执行
- 覆盖范围有限:仅处理了Sheets图表,未包含链接的嵌入表格对象
- 硬编码ID未替换:脚本中的
SLIDE-ID需替换为实际的Slides文档ID才能正常工作
内容的提问来源于stack exchange,提问作者user22067775
相关产品推荐
相关产品推荐

