Googleスプレッドシートは、日々の業務で欠かせないツールとなっています。
そのスプレッドシートを自動化・効率化する手段として注目されているのが「Google Apps Script(GAS)」です。
本記事では、Google Apps Scriptを使ってスプレッドシートのデータを取得する基本的な方法から、実用的な応用までを丁寧に解説します。
これからGASを使って業務を自動化したい方、スプレッドシートの操作をプログラムで効率化したい方は、ぜひ参考にしてください。
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を指定してアクセスする必要があります。
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です。
スプレッドシートの中のシートから、実際にデータを読み取るには次のようにします。
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時に他のスプレッドシートからデータを取得して更新する、といった定期実行は「トリガー」を使って実現できます。
これで、時間を指定して自動的にデータ取得が行われるようになります。
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指定、条件抽出、自動化までを活用すれば、業務の効率化がぐっと進みます。
まずは基本コードを動かしてみて、自分の業務に合ったスクリプトへ応用してみましょう。
次のステップでは、フォームと連携した集計、メール送信なども視野に入れると、さらに業務自動化が進むはずです。