打开时自动更新Google幻灯片中的所有链接对象

时间:2019-08-16 14:29:21

标签: google-apps-script google-slides

我想自动更新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时,它将更新图表。但是,它首先不会更新“打开幻灯片”上的图表。还有另一个问题,它现在仅适用于图表,脚本中是否也可以包含表格,因此可以更新所有图表和表格?


更新为问题

是否可以直接将按钮直接链接到工具>链接的对象>全部更新中的“更新所有”按钮

是否可以在幻灯片上直接设置一个按钮?

2 个答案:

答案 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();
        }
    }
}