スプレッドシートで外部のデータベースやWeb APIからデータを定期的に取り込みたいと思ったことはありませんか。手動で更新するのは手間ですし、更新忘れによるミスも心配です。この記事では、Google Apps Scriptのカスタムトリガーを使って、外部データを自動的に更新する方法を詳しく解説します。これを読めば、時間主導型トリガーを設定して、毎日や毎時間など好きな間隔でデータを自動取込できるようになります。
【要点】カスタムトリガーで外部データを自動更新するための3つのステップ
- Apps Scriptでデータ取得関数を作成: UrlFetchAppやIMPORTRANGEをスクリプト内で使い、外部データを取得する関数を記述します。
- 時間主導型トリガーを設定: スクリプトエディタのトリガーメニューから、実行する関数と間隔(毎時・毎日・毎週など)を指定します。
- トリガーの権限承認とテスト: 初回実行時に権限承認が必要です。テスト実行で正しく動作するか確認します。
ADVERTISEMENT
目次
なぜカスタムトリガーが外部データ定期更新に有効なのか
GoogleスプレッドシートにはIMPORTRANGEのように外部データを参照する関数がありますが、これらの関数はシートが開かれたときや手動で再計算しないと更新されません。また、Web APIからデータを取得するには、スクリプトでUrlFetchAppを使う必要があります。Google Apps Scriptのカスタムトリガーを使えば、指定した時刻や間隔でスクリプトを自動実行できるため、外部データの定期的な更新を完全に自動化できます。この仕組みにより、手動更新の手間を省き、常に最新のデータをスプレッドシートで利用できます。
カスタムトリガーで外部データを自動取込する手順
ここからは、具体的な設定手順を2つのパートに分けて説明します。まずはデータ取得用の関数を作成し、次にトリガーを設定します。
1. データ取得用の関数を作成する
- スクリプトエディタを開く
スプレッドシートのメニューから「拡張機能」→「Apps Script」をクリックします。新しいタブでスクリプトエディタが開きます。 - 関数を記述する
エディタに以下のような関数を入力します。例えば、Google Sheets APIからデータを取得する例です。function fetchExternalData() {
var response = UrlFetchApp.fetch('https://api.example.com/data');
var data = JSON.parse(response.getContentText());
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
sheet.getRange(1, 1, data.length, data[0].length).setValues(data);
}
この関数は、URLからJSONデータを取得し、アクティブシートに書き込みます。ご自身のデータソースに合わせて書き換えてください。 - 関数を保存して名前を付ける
プロジェクト名を適当に付け(例「自動データ取込」)、保存ボタンをクリックします。関数名は後でトリガー設定時に必要なので覚えておいてください。
2. 時間主導型トリガーを設定する
- トリガー追加画面を開く
スクリプトエディタの左側メニューから「トリガー」アイコン(時計マーク)をクリックし、「トリガーを追加」ボタンを押します。 - 実行する関数を選択
「実行する関数」プルダウンから、先ほど作成した関数(例:fetchExternalData)を選びます。 - トリガーの種類と間隔を設定
「時間主導型」を選択し、希望する間隔を指定します。例えば「1時間おき」「毎日 午前9時〜10時」などです。ビジネス時間のみに制限することもできます。 - 権限承認を行う
初めてトリガーを設定する場合、権限承認が必要です。ポップアップに従い、Googleアカウントを選択して「許可」をクリックします。このとき、スクリプトがスプレッドシートや外部URLにアクセスする許可を求められます。 - トリガーを保存する
設定が完了したら「保存」をクリックします。トリガー一覧に追加され、指定した間隔で関数が自動実行されるようになります。
3. トリガーのテストと動作確認
- 手動で関数を実行してみる
スクリプトエディタで関数を選択し「実行」ボタンを押します。初回は権限承認が必要ですが、正常にデータが更新されるか確認します。 - トリガーのログを確認する
トリガー一覧画面で各トリガーの「実行回数」や「最終実行日時」を確認できます。エラーが発生していないか定期的にチェックしましょう。 - スプレッドシートのデータを確認する
トリガーが動作した後、実際にシートに新しいデータが反映されていることを確認します。
外部データ取込時に注意すべきポイント
カスタムトリガーを使った自動取込では、いくつかの注意点があります。ここではよくあるトラブルと対策を紹介します。
スクリプトの実行時間制限に注意する
Apps Scriptには1回の実行につき6分(無料アカウント)という時間制限があります。大量のデータを一度に取得しようとするとタイムアウトする恐れがあります。その場合は、データを分割して取得するか、トリガーの間隔を短くして少量ずつ処理する方法を検討してください。
APIのアクセス制限やレート制限に引っかからないようにする
外部APIには1日あたりの呼び出し回数制限がある場合があります。トリガーで頻繁にリクエストを送ると、APIから拒否されることがあります。事前にAPIの利用規約を確認し、適切な間隔を設定してください。
権限の有効期限と再承認
トリガーの権限は永続的ではなく、一定期間後に失効する場合があります。特にスクリプトを編集した場合などは再承認が必要になることがあります。トリガーが動かなくなったら、まず権限が切れていないか確認しましょう。
IMPORTRANGEをスクリプトで強制更新する方法
IMPORTRANGE関数は通常、手動で再計算しないと更新されませんが、スクリプトで特定のセルを書き換えることで強制的に更新できます。例えば、IMPORTRANGEの参照範囲にダミーのセルを追加し、そのセルを更新する関数をトリガーで実行します。ただし、この方法はIMPORTRANGEの制約上、完全な自動更新とは言えない場合もあります。
ADVERTISEMENT
時間主導型トリガーと変更トリガーの使い分け
| トリガーの種類 | 動作条件 | 適した用途 |
|---|---|---|
| 時間主導型トリガー | 指定した間隔(毎時・毎日など)で実行 | 定期的な外部データ取込、バッチ処理 |
| 変更トリガー | セルの編集やシートの変更時 | リアルタイムなデータ反映、ユーザー操作への応答 |
外部データを定期的に更新する場合は時間主導型トリガーが最適です。変更トリガーはユーザー操作に応じてスクリプトを動かしたいときに使います。
まとめ
この記事では、Google Apps Scriptのカスタムトリガーを使って、外部データを自動的にスプレッドシートに取り込む方法を解説しました。時間主導型トリガーを設定することで、手動更新の手間から解放され、常に最新のデータを利用できるようになります。応用例として、複数のAPIからデータを集めてダッシュボードを作成したり、レポートを自動生成するシステムに発展させることも可能です。まずは簡単なUrlFetchApp関数から試して、定期的なデータ取込を自動化してみてください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
