【发布时间】:2018-04-26 19:49:58
【问题描述】:
我有一个谷歌应用程序脚本,它在它所附加的电子表格中部署了可变数量的工作表,目的是从 API 收集数据,它工作得很好。
但是,我想以图表的形式将这些数据可视化,而且由于它的本意是自我贬低,而且由于这些数据表的数量不定,我想创建一些图表来代表数据的各个部分数据,并且在这些图表中,每个数据表都有一个范围(系列或 y 轴),因此它是可变的,具体取决于初始化或设置。
长话短说,为了减少混淆,我只想知道如何创建图表并为每个图表添加范围。例如,我可以遍历一个列表,但问题是我遇到了以下错误: “TypeError:在对象 EmbeddedChartBuilder 中找不到函数修改。(第 97 行,文件“代码”) 解雇”
另外,请注意我正在尝试从其他工作表中提取数据,因此我使用的是 sheetName!range 表示法。
这是我正在处理的特定功能,请注意我使用占位符值只是为了让某些东西现在可以工作。
// TODO
function createCharts(){
var sheet = getSheet('Graphs');
var winrateChart = sheet.newChart().setChartType(Charts.ChartType.LINE).setPosition(2, 1, 0, 0);
// for every user, add appropriate range to chart
winrateChart = winrateChart.modify().addRange('username1!A1:B2');
winrateChart = winrateChart.modify().addRange('username2!A1:B2');
sheet.updateChart(winrateChart);
winrateChart = winrateChart.build()
sheet.insertChart(winrateChart);
}
【问题讨论】:
-
不要使用多行,为什么不做
winrateChart = winrateChart.modify().addRange('username1!A1:B2').addRange('username2!A1:B2').build();,然后用它更新工作表? -
这行不通,因为我需要设置一个循环来遍历工作表名称,这样我就可以从每张工作表中提取数据。就像我说的那样,纸张的数量是可变的。在伪代码中会是这样的。对于 sheetList 中的每个工作表,将工作表的数据添加到图表
-
您向我们展示的代码的哪一行是
line 97? -
winrateChart = winrateChart.modify().addRange('username1!A1:B2');找到了问题(部分还是没有找到完整的解决方案,因为整天都在写代码,所以休息一下),EmbeddedChart 类包含方法 modify,但是 EmbeddedChartBuilder 类没有,我开始弄清楚这里的机制是什么,EmbeddedChartBuilder 看起来是用来修改图表和做其他事情的,而方法 build 似乎使它进入了另一个类,这是用于显示图表本身的对象。
-
EmbeddedChart 的 modify() 返回可用于修改此图表的 EmbeddedChartBuilder。调用 sheet.updateChart(chart) 以保存任何更改。 EmbeddedChartBuilder 的 build() 返回 EmbeddedChart — 创建的图表,仍必须将其添加到电子表格中 我认为文档有点混乱,但我开始弄清楚了。
标签: javascript google-apps-script google-sheets