Googleスプレッドシートで自分のスプレッドシートに取り組んでいます。こちらからご覧いただけます。
このページにアクセスすると、現在のシート (グラフ入力) に 2 つのグラフが表示されます。最初のものは埋め込まれたもので、最後または下のものは"Annotated Time Line"
. これで、スプレッドシートの行が編集されるたびにグラフを自動的に更新するスクリプトを (グーグルで) 取得しました。このフォームに入力を追加して送信すると、スプレッドシートにデータ/行を追加できます。入力は自動的にスプレッドシートに追加されます。
スクリプト(onEdit
関数)をトリガーまたは実行すると、最初または一番上のチャートのみが更新されます。しかし、2つ目以降は更新されていません。
コードは次のとおりです。
function onEdit() {
var s = SpreadsheetApp.getActiveSheet();
var c = s.getCharts();
for (var i in c) {
var ch = c[i];
var ranges = ch.getRanges();
var mod = ch.modify();
for (var j in ranges) {
var range = ranges[j];
mod.removeRange(range);
var newRange = expandRange_(range);
mod.addRange(newRange);
}
s.updateChart(mod.build());
}
}
function rangeShouldExpand_(range) {
var s = range.getSheet();
var numCol = range.getNumColumns()
var values = s.getSheetValues(range.getLastRow(), range.getColumn(), 2, numCol);
for (var i = 0; i < numCol; i++) {
if (!values[0][i] && !values[1][i] || !!values[0][i] && !!values[1][i]) {
continue;
} else {
return false;
}
}
return true;
}
function expandRange_(range) {
var s = range.getSheet()
var startRow = range.getRow();
var startCol = range.getColumn();
var numRows = range.getNumRows();
var numCols = range.getNumColumns();
while (rangeShouldExpand_(range)) {
numRows++;
range = s.getRange(startRow, startCol, numRows, numCols);
}
return range;
}
さて、両方のチャートを機能させるために何をすべきか、またはどのような変更を加える必要がありますか?
ありがとう、オマー・シャリフ