google apps scriptでスプレッドシートの特定の列, 行を配列として取り込む

  • このエントリーをはてなブックマークに追加

google apps scriptのgetRange と getValuesを利用して特定のシートの指定した範囲のセルに含まれる値を取得することができるのだが、これだと列方向に対して値を取得した際に

[["A1"], ["A2"], ["A3"], ... ]

といった形で取得され、逆に行に対して値を取得すると

[["A1", "B1", "C1", ...]]

という形で取得される。複数の行・列を指定しての範囲を指定してセルの情報を取得する場合はよいのだけれども単一の行と列を取得する場合は少し扱いにくい。

f:id:hideack:20200211113912p:plain
1次元配列で返って欲しい例

上の様になってほしいので

parseLine("シート名", "B:B");

みたいな形で呼び出すとシンプルな1次元配列で返すものを準備した。

function parseLine(sheetName, range) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  var selectRange=sheet.getRange(range);
  var values=selectRange.getValues();
  var responseArray = [];
  var isCol = false;
  var isNum = new RegExp(/^[0-9]+(\.[0-9]+)?$/);
  if (isNum.test(range.charAt(0))) {
    for(var i=0; i<values[0].length; i++) {
      responseArray.push(values[0][i].toString());
    }
  } else {
    for(var i=0; i<values.length; i++) {
      responseArray.push(values[i][0].toString());
    }
  }
  return responseArray;
}

得てしてこういうのを書くと既にAPIとして備わってること多い気もするのだけれども実際どうだろう。

2022年12月24日追記

サンプルソースのインデントが崩れていたので更新しました

(Visited 2 times, 1 visits today)
  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す

*