将不同工作表的范围添加到EmbeddedChart中

时间:2014-05-20 22:30:52

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

情况如下。我有一个带有两个表格的电子表格:'Sheet1'和'Sheet2'。它们都有三列数据,共54行。我想在一个EmbeddedChart中添加两个工作表的范围。这是我的代码片段:

function testplot(){
  var s = SpreadsheetApp.getActiveSpreadsheet();
  var degrees = s.getSheetByName('Sheet1').getRange('A1:A54'); //domain
  var range1 = s.getSheetByName('Sheet1').getRange('B1:B54');  //header:'B1 SinA'
  var range2 = s.getSheetByName('Sheet1').getRange('C1:C54');  //header:'C1 CosA'
  var range3 = s.getSheetByName('Sheet2').getRange('B1:B54');  //header:'B2 SinA'
  var range4 = s.getSheetByName('Sheet2').getRange('C1:C54');  //header:'C2 CosA'
  var chartsheet = s.getActiveSheet();
  var chartbuilder = chartsheet.newChart()
    .setChartType(Charts.ChartType.LINE)
    .addRange(degrees)
    .addRange(range1)
    .addRange(range2)
    .addRange(range3)
    .addRange(range4)
    .setOption('useFirstColumnAsDomain', true)
    .setPosition(5,2,0,0)
    .setOption('height',300)
    .setOption('width',900)
    .setOption('theme','maximized')
    .setOption('pointSize',2)
    .setOption('curveType','function')
  var chart = chartbuilder.build();
  chartsheet.insertChart(chart); 
  }

结果图表仅显示“Sheet1”的范围:

enter image description here

这是手动添加所有范围时图表的样子:

enter image description here

我做错了什么?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

这似乎是Apps脚本中的一个错误,我提出了一个问题来跟踪它:

https://code.google.com/p/google-apps-script-issues/issues/detail?id=4026

问题似乎与具有相同边界的范围有关,因此作为解决方法,您可以抵消范围,以便它们具有不同的边界。

答案 1 :(得分:1)

解决方法可能是:

var range1 = s.getSheetByName('Sheet1').getRange('B1:B54');
var range2 = s.getSheetByName('Sheet1').getRange('C1:C54');
var range3 = s.getSheetByName('Sheet2').getRange('B1:B55');
var range4 = s.getSheetByName('Sheet2').getRange('C1:C55'); 

超出值范围不会导致图表结果出现问题,并且无需移动数据即可实现此操作。