google-apps-script - 使用 Apps 脚本创建图表无法插入电子表格

标签 google-apps-script google-sheets

此处的目标是在加载电子表格后,以编程方式根据预先存在的数据创建图表。

documentation for the EmbeddedChart class有两个示例,都修改现有图表,并且根据我的要求创建一个新图表:

function newChart(range, sheet){
   var sheet = SpreadsheetApp.getActiveSheet();
   var chartBuilder = sheet.newChart();
   chartBuilder.addRange(range)
       .setChartType(Charts.ChartType.Line)
       .setOption('title', 'My Line Chart!');
   sheet.insertChart(chartBuilder.build());
 }

缺少 Google 示例: .setPosition()

我试过实现这个功能,如下所示:

function makeChart(sheet, range) {
  Logger.log('MAKING CHART');  
  var chart = sheet.newChart();
  chart.addRange(range)
    .setChartType(Charts.ChartType.BAR)
    .setOption('title','I love Google Apps Script');
  sheet.insertChart(chart.build());
}

工作表和范围定义为:

var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange("C1:D16");

makeChart() 是从 onOpen() 调用的,我可以看到它正在执行。尽管如此,该图表从未出现在电子表格中。

我注意到调用 .build() 方法后不会记录任何内容,但文档中几乎没有关于此方法的内容,只是说明必须在制作图表后调用它.

编辑:脚本失败,因为 .insertChart() 需要一个 EmbeddedChart 对象,但被赋予了一个 EmbeddedChartBuilder。根据文档,.build() 方法应该返回一个 EmbeddedChart。但事实并非如此。

最佳答案

以下代码对我有用,将 A2:B8 范围内的数据显示为工作表中嵌入的条形图。

function varSet(){

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var dataRange = sheet.getRange("A2:B8");

  buildChart(sheet, dataRange)

}

function buildChart(sheet, dataRange) {

  var newChart = sheet.newChart()
    .setChartType(Charts.ChartType.BAR)
    .addRange(dataRange)
    .setPosition(5, 5, 0, 0)
    .build();

  sheet.insertChart(newChart);

};

据我所知,唯一真正的区别是我指定了插入图表的位置,并在使用 insertChart() 方法调用它之前创建了图表。希望这会有所帮助。

关于google-apps-script - 使用 Apps 脚本创建图表无法插入电子表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20702483/

相关文章:

javascript - 无法向访客发送新日历事件的通知 - Google Apps

google-apps-script - 如何通过 Google Apps 脚本下载/导出电子表格中的工作表

google-apps-script - 电子表格脚本中的 Typeform 提交触发器

google-apps-script - 如何暂停谷歌脚本中的onEdit功能

javascript - GAS Google Script - 如何复制值并粘贴到另一个单元格中

google-apps-script - 当中间有空单元格时如何跳到最后一行?

google-apps-script - 如何将 Google Apps 脚本添加到使用 API 创建的电子表格中?

google-sheets - Countif 与区分大小写的 google-sheets

javascript - 如何在多个工作表上运行 Google 脚本?

google-apps-script - Gmail 服务事件?