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 上的图表。这里,考虑如下示例情况。
在 Google Spreadsheet 中的 1 日 sheet 创建图表。数据如下。 “A”和“B”列具有值。
h1 h2
a1 1
a2 2
a3 3
a4 4
a5 5
使用 Spreadsheet.link 将图表复制并粘贴到 Google 幻灯片的第一页。
更新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.
参考:
我有一张幻灯片,其中嵌入了 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 上的图表。这里,考虑如下示例情况。
在 Google Spreadsheet 中的 1 日 sheet 创建图表。数据如下。 “A”和“B”列具有值。
h1 h2 a1 1 a2 2 a3 3 a4 4 a5 5
使用 Spreadsheet.link 将图表复制并粘贴到 Google 幻灯片的第一页。
更新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.