将数组添加为Google Sheets嵌入图表的“范围”

3

简介:我想通过使用在嵌入的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()); }


你目前尝试了什么?你能再详细说明一下你想做什么吗?请查看这份关于如何在 Stack Overflow 上提问的文档:http://stackoverflow.com/help/how-to-ask - Gerardo
我的目标只是在Google表格中制作图表,而无需创建一个新的包含所需数据的工作表,也不需要在工作表外创建HTML页面或类似的内容,因为那样会失去它的意义。谢谢。 - Matteo Ferla
1个回答

4

不要使用嵌入式图表,而是使用普通的图表对象,并使用.getAs(MimeType.PNG)将图表作为图片添加到电子表格中。

编辑:我已尝试了这个解决方案,但由于Google的错误,当您将电子表格作为PDF获取时,脚本插入的图片不会显示。请修复这个问题,自从有人报告以来已经过去了3年,他们仍在“努力”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接