LANG SELRCT

コードを書く場所についてはこちら

2018年12月8日土曜日

データが入力されている最終列を取得する


対象のシート内でデータが入力されている最終列は
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()