Google Apps 脚本刷新表格 - 图表不起作用

Google Apps Script refresh Sheets-Charts not working

我有一张幻灯片,其中嵌入了 sheets 文档中的图表。我正在更新 sheet 的数据,然后将刷新发送到 sheet-图表,但它不起作用。当我打开幻灯片文档时,我可以看到该文档中的图表已更新,但只有当我单击“更新”按钮时它才会刷新:

我更新 sheet 数据的代码:

var values = [[ date, value ]];
var range = sheet.getRange("A"+rowIndex+":B"+rowIndex);
range.setValues(values);
rowIndex++;

我要刷新的代码:
jsonItem['slideIndex'] 是指向我正在处理的幻灯片的相对指针。

Deck.getSlides()[jsonItem['slideIndex']].getSheetsCharts().forEach(function(c){c.refresh();});

如您所见,我在这里使用了一个核选项,我正在遍历我幻灯片上的所有 SheetsCharts 并刷新每一个,但我似乎无法让它工作。

在你的情况下,使用 flash() 怎么样?

修改后的脚本:

var values = [[ date, value ]];
var range = sheet.getRange("A"+rowIndex+":B"+rowIndex);
range.setValues(values);
rowIndex++;

// do something

SpreadsheetApp.flush(); // Added

// do something

Deck.getSlides()[jsonItem['slideIndex']].getSheetsCharts().forEach(function(c){c.refresh();});

示例脚本:

不幸的是,根据你的问题,我无法想象你的整个剧本。因此,我添加了一个简单的示例脚本,用于在 Spreadsheet 更新后刷新 Google Slides 上的图表。这里,考虑如下示例情况。

  1. 在 Google Spreadsheet 中的 1 日 sheet 创建图表。数据如下。 “A”和“B”列具有值。

     h1  h2
     a1  1
     a2  2
     a3  3
     a4  4
     a5  5
    
  2. 使用 Spreadsheet.link 将图表复制并粘贴到 Google 幻灯片的第一页。

  3. 更新sheet上图表的值,通过脚本刷新幻灯片上的图表。

脚本:

// Modify the value of "B2" from 1 to 10.
SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getRange("B2").setValue(10);

SpreadsheetApp.flush();

// Refresh the chart.
SlidesApp.openById("###").getSlides()[0].getSheetsCharts()[0].refresh(); // Please set the Google Slides ID.

参考: