将使用Google Apps脚本构建的图表插入到Google电子表格中

时间:2012-08-20 23:13:19

标签: google-apps-script

这听起来可能是一个愚蠢的问题,但我在网上搜索了很多,但我找不到我想要的东西......

我已经设法从不同电子表格中的数据构建我想要显示的图表,我想将图表插入电子表格而不必将数据粘贴到工作表上。这可能吗 ?

我也可以使用UIApp来显示它,但是我希望它能够显示在电子表格中,而无需通过菜单或按钮调用它。

感谢您的帮助,

edelans

- 到目前为止,这是我的代码,它正如我在调试器工具上看到的那样工作

  function BuildMTChart(){
  var ss = SpreadsheetApp.getActiveSpreadsheet() 
  var DataChart = MTLastMonth()  // MTLastMonth() returns an array with the data I need
  var dSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Dashboard");

      var dataTable = Charts.newDataTable();
          dataTable.addColumn(Charts.ColumnType['DATE'], 'Date');
          dataTable.addColumn(Charts.ColumnType['NUMBER'], 'Maintenance');
          dataTable.addColumn(Charts.ColumnType['NUMBER'], 'Troubleshooting');
          for ( var i = 0; i < DataChart.length; i++) {
            dataTable.addRow([DataChart[i][0], DataChart[i][1], DataChart[i][2]]);
          }
          dataTable.build();        

    var chart = Charts.newAreaChart()
        .setDataTable(dataTable)         
        .setDimensions(800, 400)         
        .setYAxisTitle("Hours")
        .setXAxisTitle("Date")
        .build();

2 个答案:

答案 0 :(得分:1)

EmbeddedChartBuilder 曾经有 setDataTable 方法。但我无法使它发挥作用。

据我了解,您可以从脚本中将图表添加到电子表格中,但是那些需要将数据放在电子表格中:

var chart = workingSheet.newChart()
  .setChartType(Charts.ChartType.COLUMN)
  .setPosition(8, 2, 0, 0)
  .setTitle("Sample chart")
  .setXAxisTitle("...")
  .setYAxisTitle("...")
  .addRange(range)    // This could be smth. like SpreadsheetApp.getActiveSpreadsheet().getRange("B2:C8")
  .build();

SpreadsheetApp.getActiveSpreadsheet().insertChart(chart);

Here it says您可以设置一些高级图表选项。也许有办法在那里传递DataTable?

现在我建议使用您的数据填充电子表格,然后根据范围添加图表。如果您不希望在Google文档中显示此数据,则可以隐藏列或将其移至新工作表。

答案 1 :(得分:0)

您可以将此添加到UiApp,正确调整大小并设置触发器,以便每次打开电子表格时都会显示UI应用程序吗?像这样的东西。 `function onOpen(){   return myUiApp(); }

function myUiApp(){   //构建图表并将其添加到应用程序的所有代码 }`