我希望能够让用户选择一个月份范围(即开始月份和结束月份),然后根据选择更新我的图表。在此示例中,时间为 2021 年 1 月至 9 月。我编写了另一个脚本,该脚本执行查询以根据用户选择的范围选择数据子集。这行得通,但是当我运行“更新”脚本时,我需要在现有图表中添加/修改范围。我有一整页图表,我希望能够以编程方式使用更新的范围更新每个图表。
我终于得到了一个可以修改标题和副标题的脚本,但它不会更新数据系列。有时它会做一个,有时会做2个,有时会做一个。我不明白。这些语句看起来与我手动执行并记录宏时记录的几乎相同,但它不起作用。这是我的第一次 googlescript 尝试,因此方法、类、语法等一直是导航的噩梦。任何帮助将非常感激。
第 1 行应该是横轴 第 2 行是数据 第 3 行是数据 第 4 行是数据
function modify(sheet) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[1]; // "access data on the second sheet"
ss.setActiveSheet(sheet);
var lastColumn = sheet.getRange('W6').getValue(); //for this example 'W6" contains 'J" because the example goes from column A to Column J
var charts = sheet.getCharts();
var chart = charts[0]; // access the first graph
var ranges = chart.getRanges();
var range = ranges[0]; // access the first range
var rangeA1Notation = "A109:" + lastColumn + "109"; //row 109 column A contains the label "Month Year"
var rangeA1Notation2 = "A110:" + lastColumn + "110";//row 110 column A contains the label "Revenue", Cols B through J have dollar values
var rangeA1Notation3 = "A111:" + lastColumn + "111";//row 110 column A contains the label "Coll Goal", Cols B through J have dollar values
var rangeA1Notation4 = "A112:" + lastColumn + "112";//row 110 column A contains the label "Collected", Cols B through J have dollar values
chart = chart.modify()
.removeRange(range)
.setOption("title", "Collections by Month " + rangeA1Notation)
.setOption("subtitle", "Jan 2021 - Sep 2021" + rangeA1Notation2)
//.addRange(range).setTransposeRowsAndColumns(true).setOption("useFirstColumnAsDomain", true)
//This did not work
.addRange(sheet.getRange(rangeA1Notation))
.addRange(sheet.getRange(rangeA1Notation2))
.addRange(sheet.getRange(rangeA1Notation3))
.addRange(sheet.getRange(rangeA1Notation4))
.build();
sheet.updateChart(chart)
}
示例数据如下所示,工作表/选项卡名称在图像上: