简介:我想通过使用嵌入式Google脚本中生成的数组来更改Google工作表EmbeddedChart中的数据,而不是先将数据倾注到单元格中。
长:我有一个更新预先存在的电子表格的绑定脚本。我修改了js中的数据,并希望更改嵌入式图表以使用生成的数据数组,而无需将数据放在表中。我在技术上并不关心它是一个EmbeddedChart我只是想用图表制作一个摘要页面而不用额外的工作表污染文档。不希望从表格中删除HTML页面。
我尝试过各种选择。
与普通(HTML)Google图表不同, .setDataTable()
不是EmbeddedChartBuilder
的方法。我假设我遗漏了一些简单的东西,比如某些类将数组转换为类似于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。sheet.updateChart(chartFromCharts);
//无法找到方法updateChart(图表)。将数组神奇地转换为范围对象而不保存在工作表上
//演示脚本。 function populate(){ var 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,“Categorical abscissa”)。addColumn(Charts.ColumnType.NUMBER,“Numerical ordinate”)。addRow([“A”,5])。addRow([ “B”,6])建立();
//尝试1.尽管它接受数组而绝望。 //chart.addRange(a); //无法将Array转换为Range。 //cchart.addRange(a); //无法将Array转换为Range。 //尝试2.绝望,以防它接受DataTable //chart.addRange(dt); //找不到方法addRange(DataTable)。 //尝试3.绝望黑客...... // new google.visualization.ColumnChart(getCharts()[0] .getId())。draw(dt,options); // ReferenceError:未定义“google” //我还可以访问它吗? //$(getCharts()[0].getId()).html("Hacked“)// ReferenceError:”$“未定义。 //再次... //document.getElementByID(getCharts()[0] .getId())// ReferenceError:未定义“document”。 //试试5 //sheet.updateChart(Charts.newColumnChart()建立())。 //找不到方法updateChart(图表)。 //尝试4.文档中缺少方法?! //chart.addDataTable(a); //无法在对象EmbeddedChartBuilder中找到函数addDataTable。
// cchart.addDataTable(a)的//在对象EmbeddedColumnChartBuilder中找不到函数addDataTable。
sheet.updateChart(chart.build()); }
答案 0 :(得分:2)
使用普通Charts对象而不是使用嵌入式图表,并使用.getAs(MimeType.PNG)将图表作为图像添加到电子表格中。
编辑:我已经尝试过此解决方案,并且由于谷歌的错误,当您将电子表格作为PDF格式时,脚本插入的图像不会显示。谷歌请解决这个问题,自报道以来已经有3年了,他们仍在“努力”......