google apps scriptのgetRange と getValuesを利用して特定のシートの指定した範囲のセルに含まれる値を取得することができるのだが、これだと列方向に対して値を取得した際に
[["A1"], ["A2"], ["A3"], ... ]
といった形で取得され、逆に行に対して値を取得すると
[["A1", "B1", "C1", ...]]
という形で取得される。複数の行・列を指定しての範囲を指定してセルの情報を取得する場合はよいのだけれども単一の行と列を取得する場合は少し扱いにくい。
上の様になってほしいので
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)