サイト名変更・お引越しのお知らせ

【GAS】Google Apps ScriptでSpreadSheetの範囲指定とデータ取得系操作の基本を解説

Google Apps Script(以下GAS)でSpreadSheetの読み込みから、範囲指定とデータの取得系の処理の基本を解説します。

この記事でわかること
  • GASでSpreadSheetを扱う方法がわかる
  • GASで自由にデータの範囲を指定したり、データを取得できるようになる

モグモグさん

公式のドキュメントはこちらにありますので、参考にしてください。

SpreadSheetからApps Scriptを開く

Apps Scriptを開く

任意のSpreadSheetから、Apps Scriptを開きます。

エディタ画面が開けばOKです!

この記事では、わかりやすいようにこんな感じの値を追加したシートを用意しました。こちらをもとに解説していきます。

ワークブックとシートを指定し取得

お約束のコードでワークブックとシートを指定して取得します。

const activeSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); // 現在のSpreadSheetを取得
const sheet = activeSpreadSheet.getSheetByName('テスト'); // シート(SpreadSheetの下のタブ名を指定)

メモ

ワークブックとシートの指定の方法は複数あるので、気になる方はこちらの記事をどうぞ〜。

【GAS】Google Apps ScriptでSpreadSheetのワークブックを指定する方法を解説 【GAS】Google Apps ScriptでSpreadSheetのシートを指定する方法を解説

処理の基本の流れ

はじめに、処理の基本的な流れを簡単に解説しておきます。

  1. 対象の範囲を指定
  2. 単体のセルもしくは複数のセルの値を取得

対象の範囲の指定

データを取得する対象の範囲を指定します。

こちらは、その方法をケースに合わせて解説していきます。

単体のセルもしくは複数のセルの値を取得

値を取得するために使うメソッドは、getValues()getValueを使います。

getValue

選択した範囲1つのセルの値を取得します。

範囲が複数の場合は、左上の1つセルの値を取得します。

getValues

選択した範囲内の値を2次元配列で取得できます。

// getValuesで取得したデータの例(2次元配列)
[ 
  [ 'A1', 'B1', 'C1', 'D1', 'E1' ],
  [ 'A2', 'B2', 'C2', 'D2', 'E2' ],
  [ 'A3', 'B3', 'C3', 'D3', 'E3' ]
]

モグモグさん

それでは具体的な方法を解説していきます!

全ての範囲からデータを取得

getDataRange()はデータが存在する全ての範囲を取得します。

const data = sheet.getDataRange().getValues();
console.log(data);

// 以下実行結果
[ [ 'A1', 'B1', 'C1', 'D1', 'E1' ],
  [ 'A2', 'B2', 'C2', 'D2', 'E2' ],
  [ 'A3', 'B3', 'C3', 'D3', 'E3' ],
  [ 'A4', 'B4', 'C4', 'D4', 'E4' ],
  [ 'A5', 'B5', 'C5', 'D5', 'E5' ],
  [ 'A6', 'B6', 'C6', 'D6', 'E6' ],
  [ 'A7', 'B7', 'C7', 'D7', 'E7' ],
  [ 'A8', 'B8', 'C8', 'D8', 'E8' ],
  [ 'A9', 'B9', 'C9', 'D9', 'E9' ],
  [ 'A10', 'B10', 'C10', 'D10', 'E10' ] ]

特定の範囲からデータを取得

getRangeというメソッドで範囲を指定できます。

モグモグさん

getRangeは非常に重要なのでこれの使い方を覚えればおおよそ基本はOKだと思います!

定義

getRange(row(行), column(列) , numrows(行数の範囲), numcolumns(列数の範囲))

// 補足
列のAやBは、「A => 1」になり、「B => 2」になります。

特定のセルを列と行の文字列で指定

getRangeに列と行の組み合わせを指定してセルを指定します。

const data = sheet.getRange("A1").getValue(); // A1
console.log(data);

// 以下実行結果
A1

特定のセルを数値で指定

getRangeに列番号と行番号を指定してセルを指定します。

const data = sheet.getRange(1, 2).getValue(); // B1
console.log(data);

// 以下実行結果
B1

特定の範囲を行数の範囲で指定

getRangeに列番号と行番号を指定して、さらに行方向の範囲も指定します。

const data = sheet.getRange(1, 2, 2).getValues(); // B1:B2
console.log(data);

// 以下実行結果
[ [ 'B1' ], [ 'B2' ] ]

特定の範囲を行数の範囲と列数の範囲で指定

getRangeに全ての引数を渡して列・行どちらも範囲を指定します。

const data = sheet.getRange(1, 2, 2, 2).getValues(); // B1:C2
console.log(data);

// 以下実行結果
[ [ 'B1', 'C1' ], [ 'B2', 'C2' ] ]

選択中の範囲の値を取得

あらかじめ範囲を指定するのではなく、対象のシートの選択した範囲の値を取得することもできます。

モグモグさん

範囲を指定した状態で下記のコードを実行してみてください!

const data = sheet.getActiveRange().getValues();
console.log(data);

選択中のセルの値を取得

モグモグさん

セルを指定した状態で下記のコードを実行してみてください!

const data = sheet.getCurrentCell().getValue();
console.log(data);

まとめ

ここまでで、GASでSpreadSheetを読み込んで範囲を指定し、値を取得する基本は理解できると思います。

特に、getRangeメソッドが使えれば自由に範囲を指定できますので、理解することをオススメします!