在Google表格

时间:2015-12-29 09:56:51

标签: javascript google-apps-script google-sheets

简介:我想通过使用嵌入式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)。
  • (Desparate ...)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()); }

1 个答案:

答案 0 :(得分:2)

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

编辑:我已经尝试过此解决方案,并且由于谷歌的错误,当您将电子表格作为PDF格式时,脚本插入的图像不会显示。谷歌请解决这个问题,自报道以来已经有3年了,他们仍在“努力”......