简介:我想通过使用在嵌入的Google脚本中生成的数组来更改Google Sheets的嵌入式图表中的数据,而不必首先将数据倒入单元格中。
详细描述:我有一个绑定脚本,可以更新预先存在的电子表格。我在js中修改数据,并希望更改嵌入式图表以使用生成的数据数组,而无需将数据放在表格上。技术上讲,我并不在意它是一个嵌入式图表,我只想制作一个包含图形的摘要页面,而不会在文档中添加额外的工作表。最好不要将工作表制作成HTML页面。
我尝试过各种选项。
.setDataTable()
不是EmbeddedChartBuilder
的方法,与正常(HTML)Google Charts不同。我认为我错过了一些简单的东西,比如将数组转换为类似于DataTable或Excel名称的伪Range实例的类,而不触及工作表。
最坏的情况是:我不知道是否有一种方法可以在Google Sheets中添加具有id属性的div,是否有这样的方法?
测试过的方法:
sheet.getCharts()[0].modify().addRange([2,3,4,5]);
//无法将数组转换为范围。sheet.getCharts()[0].modify().addRange("{2,3,4,5}");
//未找到方法 addRange(string)。- (绝望...)
sheet.getCharts()[0].modify().setDataTable();
//对象 EmbeddedChartBuilder 中找不到函数 setDataTable。 - (绝望...)
sheet.updateChart(chartFromCharts);
//未找到方法 updateChart(Chart)。 神奇地将数组转换为范围对象而不保存在工作表上
//演示脚本。 function populate() { var a=[1, 2, 3, 4, 5]; var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var chart=sheet.getCharts()[0].modify(); chart.setOption('title', "Changed in script..."); cchart=chart.asColumnChart(); dt=Charts.newDataTable().addColumn(Charts.ColumnType.STRING, "分类横轴").addColumn(Charts.ColumnType.NUMBER, "数值纵轴").addRow(["A",5]).addRow(["B",6]).build();
//尝试1. 绝望,以防万一它接受数组。 //chart.addRange(a); //无法将数组转换为范围。 //cchart.addRange(a); //无法将数组转换为范围。 //尝试2. 绝望,以防万一它接受 DataTable //chart.addRange(dt); //对象 EmbeddedChartBuilder 中找不到方法 addRange(DataTable)。 //尝试3. 绝望的黑客... //new google.visualization.ColumnChart(getCharts()[0].getId()).draw(dt, options); //ReferenceError: "google" is not defined //我能访问它吗? //$(getCharts()[0].getId()).html("Hacked") //ReferenceError: "$" is not defined. //再试一次... //document.getElementByID(getCharts()[0].getId()) //ReferenceError: "document" is not defined. //尝试5. //sheet.updateChart(Charts.newColumnChart().build()); //未找到方法 updateChart(Chart)。 //尝试4. 文档中缺少的方法?! //chart.addDataTable(a); //在对象 EmbeddedChartBuilder 中找不到函数 addDataTable。
//cchart.addDataTable(a); //在对象 EmbeddedColumnChartBuilder 中找不到函数 addDataTable。
sheet.updateChart(chart.build()); }