在展示时更新谷歌幻灯片



我需要在演示模式下的谷歌幻灯片,同时需要与链接的谷歌表编辑幻灯片,编辑的内容必须在演示文稿中实时更新。是否有可能,或者有其他方法或应用程序可用于此目的?

如果你只是在寻找一个谷歌幻灯片图表,每当在谷歌工作表中对其源数据进行编辑时,它就会不断更新,你可以在谷歌工作表文档中创建一个onEdit触发器,在图表数据源被编辑时更新谷歌幻灯片。

步骤:

  • 将以下代码复制粘贴到您的Google Sheet(图表数据所在的位置)脚本文件中。
  • 运行createSpreadsheetOnEditTrigger函数
  • chartDataSourceRange变量的[Enter Chart Data Source Range]更新到内嵌图的数据范围
  • 在变量slide中,用Google幻灯片文档中的id替换[Enter Presentation ID][Enter Slide ID]
  • 根据需要更新chart变量引用现在它只在寻找幻灯片中的第一张图表。

指出:

  • 在编辑完成后,Google幻灯片将更新~2秒。
  • 公式对图表数据源的任何更改都不会更新图表。
  • 如果你不运行createSpreadsheetOnEditTrigger函数,你会收到一个权限错误。

代码:

/**
* Creates a trigger for when a spreadsheet is edited.
* @see https://developers.google.com/apps-script/guides/triggers/installable
*/
function createSpreadsheetOnEditTrigger() {
const ss = SpreadsheetApp.getActive();
ScriptApp.newTrigger('onEdit_')
.forSpreadsheet(ss)
.onEdit()
.create();
}
function onEdit_(e) {
var editedRange = e.range;
var chartDataSourceRange = SpreadsheetApp.getActiveSheet().getRange([Enter Chart Data Source Range]);
if(!doesRangeIntersect(editedRange, chartDataSourceRange)) return;
var slide = SlidesApp.openById([Enter Presentation ID]).getSlideById([Enter Slide ID])
var chart = slide.getSheetsCharts()[0]
chart.refresh()
}
function doesRangeIntersect(range1, range2) {
range1 = new Coordinates(range1);
range2 = new Coordinates(range2);
return (
Overlaps(range1.x1, range1.x2, range2.x1, range2.x2) &&
Overlaps(range1.y1, range1.y2, range2.y1, range2.y2)
);
function Coordinates(range) {
var self = this;
self.x1 = range.getColumn();
self.y1 = range.getRow();
self.x2 = range.getLastColumn();
self.y2 = range.getLastRow();
}
function Overlaps(a, b, c, d) {
return (
(a >= c && a <= d) ||
(b >= c && b <= d) ||
(c >= a && c <= b) ||
(d >= a && d <= b)
);
}
}

最新更新