【问题标题】:Issues with naming ranges for charts within the Google Spreadsheet ScriptGoogle 电子表格脚本中图表的命名范围问题
【发布时间】:2015-05-29 04:25:27
【问题描述】:

我几天来一直在尝试创建具有智能范围的图表,当谷歌电子表格中的数据更新时,它会有所不同。但是我成功了,我无法让 .setOption 方面工作。例如,我想要图表的标题、描述等。但这不是主要问题,因为我可以手动插入那里。

然而,更重要的是范围名称,因为我使用脚本时没有。所以,在图表中,不可能看到每一列代表什么,我真的很想解决这个问题。我尝试使用 .setNamedRange() 方面,但这不起作用。

谁能帮我解决这个问题?

function check() {

 var sheet = SpreadsheetApp.getActiveSheet();
    var end = sheet.getLastRow();
    var start = (end - 5); 
    var endnew = (end - 4);
    var startnew = (end - 6);

     if(sheet.getCharts().length == 0){    
     Logger.log("Er is geen grafiek");
     var chartBuilder = sheet.newChart()
     .asColumnChart().setStacked()
     .addRange(sheet.getRange("A" + startnew + ":" + "A" + endnew)) // should have a name
     .addRange(sheet.getRange("B" + startnew + ":" + "B" + endnew)) // should have a name
     .addRange(sheet.getRange("E" + startnew + ":" + "E" + endnew)) //should have a name
     .setOption('title', 'Effectief gebruik kantoorruimte') //not working
     .setPosition(10, 10, 0, 0)

     var chart = chartBuilder.build();
     sheet.insertChart(chart);    
  }

  else{
Logger.log("Er is wel een grafiek");
var charts = sheet.getCharts();
for (var i in charts) {
  var chart = charts[i];
  var ranges = chart.getRanges();
  var builder = chart.modify();
  for (var j in ranges) {
    var range = ranges[j];
    builder.removeRange(range);

    builder
    .addRange(sheet.getRange("A" + (start) + ":" + "A" + end)) //should have a name
    .addRange(sheet.getRange("B" + (start) + ":" + "B" + end)) //should have a name
    .addRange(sheet.getRange("E" + (start) + ":" + "E" + end))  // should have a name
    .setOption('title', 'Effectief gebruik kantoorruimte')
    .build();
    sheet.updateChart(builder.build());  

   }
    }
  }

}

【问题讨论】:

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


    【解决方案1】:

    我假设这段代码是问题所在?

    builder
    .addRange(sheet.getRange("A" + (start) + ":" + "A" + end))
    

    也许可以尝试使用 JavaScript toString() 方法来确保您的文本公式正常工作。

    .addRange(sheet.getRange("A" + start.toString() + ":" + "A" + end.toString()))
    

    您可以使用不同的格式:

    getRange(row, column, numRows, numColumns)
    

    所以,应该是:

    getRange(start, 1, 1, numColumns)
    

    从 A 列的“start”行开始。它获取一行数据,以及多少列。

    【讨论】:

      猜你喜欢
      • 2013-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多