Categories: サービス

Google Apps Scriptでスプレッドシートのデータを取得する方法|初心者でもできる基本操作と応用例

Googleスプレッドシートは、日々の業務で欠かせないツールとなっています。
そのスプレッドシートを自動化・効率化する手段として注目されているのが「Google Apps Script(GAS)」です。
本記事では、Google Apps Scriptを使ってスプレッドシートのデータを取得する基本的な方法から、実用的な応用までを丁寧に解説します。
これからGASを使って業務を自動化したい方、スプレッドシートの操作をプログラムで効率化したい方は、ぜひ参考にしてください。


Google Apps Scriptとは?

Google Apps Script(GAS)は、Googleが提供するクラウドベースのJavaScript環境です。
Google Workspace(旧G Suite)の各種サービス(スプレッドシート、Gmail、カレンダーなど)を自動化・拡張するために使われます。

特にスプレッドシートと連携することで、以下のようなことが可能になります。

  • 定期的なデータ集計
  • 自動でのメール送信
  • 外部データとの連携
  • フォーム入力の自動記録 など

無料で使える上に、Googleアカウントさえあればすぐに始められるのが魅力です。


スプレッドシートを取得する基本の書き方

まずは、Google Apps Scriptのエディタを開いて、スプレッドシートを取得する基本的なコードを見ていきましょう。

function getSpreadsheet() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
Logger.log(sheet.getName());
}

このコードは、現在開いているスプレッドシート(=スクリプトが紐づいているスプレッドシート)を取得し、その名前をログに出力します。

ポイント解説:

  • SpreadsheetApp.getActiveSpreadsheet():現在のスプレッドシートを取得。
  • Logger.log(...):ログに情報を出力(Ctrl + Enterで実行し、表示→ログで確認可能)。

特定のスプレッドシートをIDで取得する方法

別のスプレッドシートからデータを取得したい場合、スプレッドシートIDを指定してアクセスする必要があります。

function getSpreadsheetById() {
var sheetId = "1a2b3c4d5e6f..."; // スプレッドシートのID
var ss = SpreadsheetApp.openById(sheetId);
Logger.log(ss.getName());
}

スプレッドシートのURLは次のような形式です:

https://docs.google.com/spreadsheets/d/1a2b3c4d5e6f7g8h9i0j/edit#gid=0

この中の「1a2b3c4d5e6f7g8h9i0j」の部分がスプレッドシートIDです。


シートのデータを取得する方法(2次元配列)

スプレッドシートの中のシートから、実際にデータを読み取るには次のようにします。

function getSheetData() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("データ");
var range = sheet.getDataRange(); // データが入力されている範囲
var values = range.getValues(); // 2次元配列で取得

for (var i = 0; i < values.length; i++) {
Logger.log(values[i]); // 各行のデータをログに出力
}
}

このコードでは、getDataRange()でシート内のデータ範囲を自動検出し、getValues()で2次元配列としてすべてのデータを取得しています。


特定のセルの値を取得する

特定のセル(例:B2)のデータを取得したい場合は、次のように記述します。

function getSpecificCellValue() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("データ");
var value = sheet.getRange("B2").getValue();
Logger.log("B2の値:" + value);
}

セル番地はA1形式で指定できるほか、getRange(row, column)形式でも指定可能です。


条件を指定してデータを抽出する

たとえば「A列に ‘営業部’ と書かれている行だけ取得したい」といった条件付き抽出も可能です。

function getFilteredData() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("社員名簿");
var data = sheet.getDataRange().getValues();

for (var i = 1; i < data.length; i++) { // 1行目は見出しと仮定
if (data[i][0] === "営業部") {
Logger.log(data[i]); // 営業部の行だけ出力
}
}
}

外部スプレッドシートからのデータ取得を自動化する

例えば、毎朝6時に他のスプレッドシートからデータを取得して更新する、といった定期実行は「トリガー」を使って実現できます。

手順:

  1. スクリプトエディタで関数を作成
  2. メニューから「トリガー」を開く
  3. 「新しいトリガーを追加」で関数と実行時間(時間主導型)を指定

これで、時間を指定して自動的にデータ取得が行われるようになります。


取得したデータを他のシートへ書き込む応用

javascriptコピーする編集するfunction copyDataToAnotherSheet() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var source = ss.getSheetByName("入力データ");
  var target = ss.getSheetByName("出力データ");

  var values = source.getDataRange().getValues();
  target.getRange(1, 1, values.length, values[0].length).setValues(values);
}

このように、データの取得と同時にコピー・加工といった応用も自由自在です。


エラー時の対応ポイントとログの活用

スクリプトにミスがあると、エラーが出て処理が止まります。GASのデバッグには以下が便利です。

  • Logger.log():値の確認
  • try-catch文:エラーの回避
  • 実行ログ:メニューの「表示→ログ」から確認

例:

function safeGetData() {
try {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("存在しないシート");
var values = sheet.getDataRange().getValues();
Logger.log(values);
} catch (e) {
Logger.log("エラーが発生しました: " + e.message);
}
}

まとめ

Google Apps Scriptを使えば、スプレッドシートのデータ取得は驚くほど簡単かつ柔軟に行えます。
今回紹介した基本的な取得方法から、ID指定、条件抽出、自動化までを活用すれば、業務の効率化がぐっと進みます。

まずは基本コードを動かしてみて、自分の業務に合ったスクリプトへ応用してみましょう。
次のステップでは、フォームと連携した集計、メール送信なども視野に入れると、さらに業務自動化が進むはずです。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。