Google シート中のグラフの変更をGASで行なう

2018-05-18 | tech

グラフがなかったら新規作成、あったらそれをスキップします。
既にあるレンジを削除して、新しいレンジに変更するのは、既にグラフにあるレンジを取り出す関数 getRanges? がないので、可能性のあるレンジを片っ端から removaRange で消しています。
元の表がXY逆なので、setTransposeRowsAndColumns で行列の入れ替えをしています。
細かいデザインは、シート中にできたチャートに手動で施せば、アップデートしても崩れないので、スクリプトには入れませんでした。

function addChart(yy){
var sheet=SpreadsheetApp.getActiveSheet();
var chart=sheet.getCharts()[0];
var range0=sheet.getRange("G11:V11");
var range1=sheet.getRange("G"+yy+":V"+yy);
if(!chart){
var chart=sheet.newChart()
.addRange(range0)
.addRange(range1)
.setTransposeRowsAndColumns(true)
.setChartType(Charts.ChartType.LINE)
.setPosition(2,7,0,0)
.setOption('height',200);
sheet.insertChart(chart.build());
}
chart=chart.modify();
for(i=12;i<100;i++)
chart=chart.removeRange(sheet.getRange("G"+i+":V"+i));
chart=chart.addRange(range0).addRange(range1).build();
sheet.updateChart(chart);
}