我想自动更新Google幻灯片中的链接对象(图表和表格)。我看到了previous questions的回答,并在下面汇编了代码:
function onOpen() {
SlidesApp.getUi() // Or DocumentApp or FormApp.
.createMenu('Update Charts')
.addItem("Update now", 'refreshCharts').addToUi();
refreshCharts();
}
function refreshCharts(){
var gotSlides = SlidesApp.getActivePresentation().getSlides();
for (var i = 0; i < gotSlides.length; i++) {
var slide = gotSlides[i];
var sheetsCharts = slide.getSheetsCharts();
for (var k = 0; k < sheetsCharts.length; k++) {
var shChart = sheetsCharts[k];
shChart.refresh();
}
}
}
当我点击Update Charts> Update now
时,它将更新图表。但是,它首先不会更新“打开幻灯片”上的图表。还有另一个问题,它现在仅适用于图表,脚本中是否也可以包含表格,因此可以更新所有图表和表格?
更新为问题
是否可以直接将按钮直接链接到工具>链接的对象>全部更新中的“更新所有”按钮
是否可以在幻灯片上直接设置一个按钮?
答案 0 :(得分:1)
要更新图表,您的refreshCharts()
函数应为onOpen()
。至于表,似乎没有与refresh()
等效的SheetChart
函数。这个问题有existing feature request,您可以查看该链接以获取更新。
目前的解决方法是必须使用刷新按钮手动更新它们,该刷新按钮显示在UI中,该刷新按钮位于工具->链接对象中的“链接对象”菜单中。您还可以创建一个函数,根据您要填充表格的工作表,逐个单元格地更新表格。
答案 1 :(得分:1)
我在具有所有图表的Google Spreadsheet上这样编写了脚本,并将触发器设置为onChange。因此,每次电子表格上有更新时,特定平台上的图表将自动刷新:
function refreshChartsOnChange(){
var getSlides = SlidesApp.openById('[ID of the Slide here]').getSlides();
for (var i = 0; i < getSlides.length; i++) {
var slide = getSlides[i];
var sheetCharts = slide.getSheetsCharts();
for (var j = 0; j < sheetCharts.length; j++) {
var sheetChart= sheetCharts[j];
sheetChart.refresh();
}
}
}