LoginSignup
0
0

More than 1 year has passed since last update.

【Google App Script】スプレッドシートのデータを配列として取得する方法

Posted at

GoogleAppScriptを使って、Googleスプレッドシートにデータを出力することは、よくあると思います。
それとは逆に、Googleスプレッドシート上のデータを使って、GoogleAppScriptで処理を行うことも、同様にありますね。

今回はGoogleスプレッドシートの列データを対象に、GoogleAppScriptの配列データとして扱う方法を解説します。

セル範囲を取得 ~ getRange()

まずは、取得したいデータの対象セル範囲を特定します。
事前に取得したSheetオブジェクトに対して、getRangeメソッドを使い、Rangeオブジェクトの形で取得します。
構文は以下の通りです。

syntax.gs
Sheetオブジェクト.getRange(開始行番号, 開始列番号, 行数, 列数);

実際のサンプルは以下のようになります。

sample1.gs
function myFunction() {
  // 2行目,1列目(A2セル)を開始位置として、3行分を範囲として取得
  // 列数は省略されているので、デフォルトの1列となる
  range = sheet.getRange(2, 1, 3);
}

行数の指定として、「シート上に存在する最後のデータまで」の条件で指定したいことが多いと思います。
その場合は、別の記事で紹介したgetLastRowメソッドを使用した、以下の形式が便利です。

sample2.gs
function myFunction() {
  // 2行目,1列目(A2セル)を開始位置として、3行分を範囲として取得
  // 列数は省略されているので、デフォルトの1列となる
  range = sheet.getRange(2, 1, sheet.getLastRow()-1);
}

範囲データを配列として取得 〜 getValues()

上記で取得したRangeオブジェクトに対して、getValues()メソッドを使うことで、配列データとして取得できます。
構文は以下の通りです。

syntax.gs
Rangeオブジェクト.getValues();

先程のsampleコードに対して適用する場合、以下のようになります。

sample.gs
function myFunction() {
  range = sheet.getRange(2, 1, 3);
  list = range.getvalues();
}

このコードを、以下のサンプルのスプレッドシートに対して適用してみましょう。

対象のスプレッドシート例

スクリーンショット 2022-08-01 14.24.48.png

取得結果はこちら。

result.log
[['A2'],['A3']]

残念ながら、2次元配列の形で取得されています。
今回は1列のデータなので、1次元配列で扱いたいという場合は、繰り返し処理を噛ませて展開してあげる必要があります。
こんな感じになります。

sample2.gs
function myFunction() {
  range = sheet.getRange(2, 1, 3);
  list = range.getvalues();

  // 整形後データを格納するための、空配列
  list_new = [];
  // 2次元配列を展開して、空配列に1次元データとして格納
  for(var i=0;i<list.length;i++){
   list_new.push(list[i][0])
  }
}

参考記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0