Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 使用应用程序脚本创建图表无法插入电子表格_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 使用应用程序脚本创建图表无法插入电子表格

Google apps script 使用应用程序脚本创建图表无法插入电子表格,google-apps-script,google-sheets,Google Apps Script,Google Sheets,这里的目标是在加载电子表格时,从预先存在的数据以编程方式创建图表 有两个示例,都是修改现有图表,以及根据我的需要创建新图表: 函数新图表(范围、工作表){ var sheet=SpreadsheetApp.getActiveSheet(); var chartBuilder=sheet.newChart(); chartBuilder.addRange(范围) .setChartType(Charts.ChartType.Line) .setOption('title','My Line Cha

这里的目标是在加载电子表格时,从预先存在的数据以编程方式创建图表

有两个示例,都是修改现有图表,以及根据我的需要创建新图表:

函数新图表(范围、工作表){
var sheet=SpreadsheetApp.getActiveSheet();
var chartBuilder=sheet.newChart();
chartBuilder.addRange(范围)
.setChartType(Charts.ChartType.Line)
.setOption('title','My Line Chart!');
sheet.insertChart(chartBuilder.build());
}
缺少谷歌示例:
.setPosition()

我已尝试实现此功能,因此:

函数生成图(表,范围){
Logger.log(“制作图表”);
var chart=sheet.newChart();
图表.添加范围(范围)
.setChartType(Charts.ChartType.BAR)
.setOption('title','I love Google Apps Script');
sheet.insertChart(chart.build());
}
其中,图纸和范围定义为:

var sheet=SpreadsheetApp.getActiveSheet();
var范围=sheet.getRange(“C1:D16”);
makeChart()
是从
onOpen()
调用的,我可以看到它正在执行。尽管如此,该图表从未出现在电子表格中

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


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

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

函数变量集(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getActiveSheet();
var dataRange=sheet.getRange(“A2:B8”);
构建图表(表,数据范围)
}
功能构建图(表,数据范围){
var newChart=sheet.newChart()
.setChartType(Charts.ChartType.BAR)
.addRange(数据范围)
.设置位置(5,5,0,0)
.build();
表.插入图表(新图表);
};

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

谷歌自己的例子如下:

这在两个方面是错误的。首先,ChartType是'LINE'而不是'LINE',其次,它需要调用.setPosition,否则会出现关于“这些列超出范围”的错误@桑斯科菲尔德的回答是正确的

请注意,像这样在末尾链接“.build()”是行不通的:

var chart = sheet.newChart();
chart.addRange(range)
 .setChartType(Charts.ChartType.BAR)
 .setPosition(5,5,0,0)
 .setOption('title','I love Google Apps Script')
 .build();
sheet.insert(chart);
它必须是这样的:

var chart = sheet.newChart();
chart.addRange(range)
 .setChartType(Charts.ChartType.BAR)
 .setPosition(5,5,0,0)
 .setOption('title','I love Google Apps Script');
sheet.insert(chart.build());

谢谢你的意见,伙计。我尝试在插入之前调用
.build()
,并添加
.setPosition()
值,但仍然没有成功。我想知道这是否与所使用的数据有关,虽然是相当简单的数字,所以我不会这么想。@kyranjamie你使用的是新的谷歌电子表格还是旧的?我仍然在使用旧的脚本,因为脚本和新的脚本都有一些严重的问题,可能会导致您的问题?哈哈。谢谢@KevH!这也是我遇到的问题,你的解决方案解决了它!我想知道问题到底是什么。即使在这种情况下,传递给
insertChart()
的参数也应该是
EmbeddedChartBuilder
EmbeddedBarChartBuilder
。顺便说一句:工作表方法是
insertChart()
,而不仅仅是
insert()