【问题标题】:Adding a chart in Google Sheets with Google Script使用 Google Script 在 Google 表格中添加图表
【发布时间】:2020-02-04 14:08:16
【问题描述】:

我正在尝试在 Google 表格的表格中添加图表,但 Google 脚本说“找不到方法 insertChart(Charts.Chart)。(第 39 行,文件“代码”)”。 但我使用的是文档中写的方法。我做错了什么?

function doGet()
{
    var app = SpreadsheetApp;
    var ss = app.getActiveSpreadsheet();
    var sheet = ss.getActiveSheet();
    //
    var artistsArray;
    var dataArtists;
    //
    artists = {};
    dataArtists = Charts.newDataTable()
      .addColumn(Charts.ColumnType.STRING, 'Artists')
      .addColumn(Charts.ColumnType.NUMBER, 'Count');
    //  
    for (var line = 2 ; line <= ss.getDataRange().getNumRows() ; line++)
    {
      value = sheet.getRange(line, 3).getValue();
      if (isNaN(artists[value]))
        artists[value] = 1;
      else
        artists[value]++;
    }
    //
    for(var key in artists)
    {
      console.log(key, artists[key])
      dataArtists.addRow([key, artists[key]]);
    }
    dataArtists.build()
    //
    var artistsChart = Charts.newBarChart()
      .setDataTable(dataArtists)
      .setTitle('Number of Tracks per Artist')
      .setXAxisTitle('Number of  Tracks')
      .setYAxisTitle('Artists')
      .setDimensions(600, 500)
      .build();
      //
    sheet.insertChart(artistsChart);
}

【问题讨论】:

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


    【解决方案1】:

    您正在使用图表服务功能创建Chart object。要使用 insertChart() function,您需要来自电子表格服务的 EmbeddedChart object。要创建嵌入式图表,请使用 newChart() function 并使用 EmbeddedChartBuilderEmbeddedBarChartBuilder (as you want a bar chart) 函数对其进行编辑。

    以下代码是您当前代码的翻译,您需要使用addRange函数设置数据范围,在这种情况下为“B4:C17”单元格:

    function createChart() {
      var app = SpreadsheetApp;
      var ss = app.getActiveSpreadsheet();
      var sheet = ss.getActiveSheet();
    
      var artistsChart = sheet.newChart().asBarChart()
      .addRange(sheet.getRange("B4:C17"))
      .setTitle('Number of Tracks per Artist')
      .setXAxisTitle('Number of  Tracks')
      .setYAxisTitle('Artists')
      .setPosition(4, 7, 0, 0)
      .build();
    
      sheet.insertChart(artistsChart);
    }
    

    请注意,您应该更改函数名称,因为 doGet 函数名称用于Web Apps

    【讨论】:

      【解决方案2】:

      问题

      方法insertChart(Charts.Chart)“未找到”。 Google Apps 脚本中的错误消息可能会让人非常困惑,但一旦解释,它们就会变得更容易理解 - 错误的真正含义是它不能在 Chart 实例上调用。如果您再次查看文档,您会发现它接受 EmbeddedChart 的实例,这就是导致问题的原因。

      解决方案

      不要使用Charts 服务构建图表,而是使用newChart() 方法 - 它会生成一个EmbeddedChartBuilder 实例,您可以随意配置它,在其上调用build() 并将生成的EmbeddedChart 传递给@ 987654332@.

      参考文献

      1. newChart() 方法 ref
      2. EmbeddedChartBuilder班级ref
      3. EmbeddedChart班级ref

      备注

      如果我从一开始就知道这一点,它会为我节省很多调试时间 - 作为一般的经验法则,如果您看到带有“找不到方法”的错误消息,那么您正在尝试传入一个diff 类型/类实例 的参数比所需的(例如传递undefined

      【讨论】:

        猜你喜欢
        • 2021-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-05
        • 1970-01-01
        • 2016-09-11
        • 2012-07-21
        相关资源
        最近更新 更多