A列に a1 a2 a3 というデータが入ったシートから

[a1, a2, a3]
という1次元配列を作りたい
コード.gsfunction get_array() {
var sh = SpreadsheetApp.getActiveSheet();
var last_row = sh.getLastRow();
var range = sh.getRange("A1:A" + last_row)
var values = range.getValues();
var array = [];
for(var i = 0; i < values.length; i++){
array.push(values[i][0]);
}
Logger.log(array);
}
| 意訳この機能がやること 対象のシートを取得して シート内でデータが入っている最終行を取得して A1から最終行までの範囲を指定して 範囲内のすべての値を取得して 配列の入れ物を用意して 値の数だけ以下を繰り返す 値を1つずつ取り出してarrayに追加する 最終的にできたarrayをログに出す |
get_array() を実行すると以下のように1次元配列でログが出ます

列ごとにデータが入っている行数が異なる場合
1次元配列で取得したい列を指定してその最終行を取得してやる
コード.gsfunction get_array() {
var sh = SpreadsheetApp.getActiveSheet();
var col = "A";
var last_row = get_last_row(sh, col);
var start_row = 1;
var range = sh.getRange(col + start_row + ":" + col + last_row)
var values = range.getValues();
var array = [];
for(var i = 0; i < values.length; i++){
array.push(values[i][0]);
}
Logger.log(array);
}
function get_last_row(sh, col) {
var values = sh.getRange(col + ":" + col).getValues();
for (var i = values.length - 1; i >= 0; i--) {
if (values[i] != "") {
break;
}
}
var last_row = i + 1;
return last_row;
}
| 意訳この機能がやること 対象のシートを取得して 列を指定して その列でデータが入っている最終行を取得して 先頭の行を指定して 範囲を指定して 範囲内のすべての値を取得して 配列の入れ物を用意して 値の数だけ以下を繰り返す 値を1つずつ取り出してarrayに追加する 最終的にできたarrayをログに出す この機能がやること 受け取ったshシート内のcol列の値(空欄を含む)をすべて取得して 値がなくなるまで以下を繰り返す もし値が空でなければ 繰り返しの処理から抜ける iは0から始まっているので i に1を足したものを行数として 返す |
補足
以下のように普通に range.getValues() で取得すると
2次元配列が返ってくるのですが
1次元配列で取得したくて上記のようなコードを書いてみました
コード.gsfunction get_array() {
var sh = SpreadsheetApp.getActiveSheet()
var last_row = sh.getLastRow();
var range = sh.getRange("A1:A" + last_row)
var values = range.getValues();
Logger.log(values);
}
|
関連記事
データが入力されている最終行を取得する
