対象のシート内でデータが入力されている最終列は
sheet.getLastColumn()
で取得できます
ここでは特定の列でデータが入力されている最終列を取得するということをやります
こういうシートがあって
1行目でデータが入っている最終列
3行目でデータが入っている最終列
をログに出してみます
コード.gs
function run() { var row1 = 1; Logger.log(getLastColumn(row1)); var row3 = 3; Logger.log(getLastColumn(row3)); } function getLastColumn(row) { var sheet = SpreadsheetApp.getActiveSheet(); var values = sheet.getRange(row + ":" + row).getValues(); for (var i = values[0].length - 1; i >= 0; i--) { if (values[0][i] != "") { break; } } var lastColumn = i + 1; return lastColumn; } |
意訳この機能がやること 1行目で 値が入っている最終列を取得してログに出す 3行目で 値が入っている最終列を取得してログに出す この機能がやること(対象の行を受け取る) 現在のシートを取得する 受け取った行の列の値をすべて取得する その行の最後の列から値を見ていく 値が入っていたら 繰り返しから抜ける 値が入っている列を(配列は0始まりなので列数は+1) 返す |
参考
getRange(row, column)
https://developers.google.com/apps-script/reference/spreadsheet/sheet#getrangerow-column
getValues()
https://developers.google.com/apps-script/reference/spreadsheet/range#getvalue
getLastColumn()
https://developers.google.com/apps-script/reference/spreadsheet/sheet#getLastColumn()