javascript - 在 Google 表格中添加数组作为 EmbeddedChart 的 "range"

标签 javascript google-apps-script google-sheets

简介:我想通过使用在嵌入式 Google 脚本中生成的数组来更改 Google 工作表 EmbeddedChart 中的数据,而不是先将数据倒入单元格中。

:我有一个绑定(bind)脚本可以更新预先存在的电子表格。我在 js 中修改数据,想更改一个嵌入式图表以使用生成的数据数组而不将数据放在表上。从技术上讲,我不关心它是一个 EmbeddedChart 我只是想制作一个带有图表的摘要页面,而不用额外的工作表污染文档。不想用工作表制作 HTML 页面。

我尝试了多种选择。

.setDataTable() 不是 EmbeddedChartBuilder 的方法,这与普通 (HTML) Google Charts 不同。我假设我遗漏了一些简单的东西,比如一些将数组转换为伪 Range 实例的类,类似于 DataTable 或 Excel 的名称,而不触及工作表。

最坏的情况:我不知道有一种方法可以在 Google 表格中添加带有 id attrib 的 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。
  • (Desparate...) sheet.updateChart(chartFromCharts);//找不到方法updateChart(Chart)。
  • 神奇地将数组转换为范围对象而不保存在工作表上

    //演示脚本。 功能填充(){ 变量 a=[1, 2, 3, 4, 5]; var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var chart=sheet.getCharts()[0].modify(); chart.setOption('title', "在脚本中更改..."); cchart=chart.asColumnChart(); dt=Charts.newDataTable().addColumn(Charts.ColumnType.STRING, "分类横坐标").addColumn(Charts.ColumnType.NUMBER, "数值纵坐标").addRow(["A",5]).addRow([ "B",6]).build();

    //Try 1. Desparate 以防它接受数组。 //图表.addRange(a);//无法将数组转换为范围。 //cchart.addRange(a);//无法将数组转换为范围。 //Try 2. Desparate 以防它接受 DataTable //chart.addRange(dt);//找不到方法 addRange(DataTable)。 //尝试 3. Desparate hack... //new google.visualization.ColumnChart(getCharts()[0].getId()).draw(dt, options);//ReferenceError: “google”未定义 //我还能访问它吗? //$(getCharts()[0].getId()).html("Hacked")//ReferenceError: "$"未定义。 //再次... //document.getElementByID(getCharts()[0].getId())//ReferenceError: “文档”未定义。 //尝试5。 //sheet.updateChart(Charts.newColumnChart().build());//找不到方法updateChart(Chart)。 //尝试 4. 文档中缺少方法?! //图表.addDataTable(a);//在对象 EmbeddedChartBuilder 中找不到函数 addDataTable。

    //cchart.addDataTable(a);//在对象 EmbeddedColumnChartBuilder 中找不到函数 addDataTable。

    sheet.updateChart(chart.build());

最佳答案

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

编辑: 我试过这个解决方案,但由于 google 的错误,当您以 PDF 格式获取电子表格时,脚本插入的图像不会显示。谷歌请解决这个问题,它被报道已经 3 年了,他们仍在“努力”..

关于javascript - 在 Google 表格中添加数组作为 EmbeddedChart 的 "range",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34508608/

相关文章:

google-apps-script - 如何复制模板并插入另一个文档中的内容?

google-apps-script - 可以使用电子表格中的数据自动填写和提交 Google 表单吗?

javascript - Js toString 是如何工作的?

javascript - 将 PHP 脚本返回的 HTML 表转换为 Ionic 框架的 ion-list 格式

utf-8 - 如何修复 .gs 脚本中的字符集问题?

javascript - 如何修复 "Service invoked too many times in a short time: exec qps."

google-apps-script - 清除范围但保留公式的脚本 - Gsheets

sql - 如何在 Google Data Studio 中组合两个日期字段?

javascript - 如何检查 CSS 背景色是否为白色?

javascript - 在 AngularJS 中异步加载数据的正确方法