外部のAPIにGETリクエストを送信してJSONを取得するの実装コード
Google Apps Script(GAS)を用いて外部Web APIからデータを取得し、プログラム内で扱えるJSON形式に変換するための最小限の実装コードです。GASの組み込みサービスであるUrlFetchAppを使用することで、複雑な通信制御を行わずにシンプルな記述で目的のデータを取得できます。
const url = "https://api.example.com/data";
const response = UrlFetchApp.fetch(url);
const json = JSON.parse(response.getContentText());
仕様と技術的な注意点
GASで外部API通信を行う際の中核機能となるのがUrlFetchAppクラスです。このコードで使用されている各オブジェクトやメソッドの技術的仕様と役割について解説します。
組み込み処理の主な仕様は以下の通りです。
- UrlFetchApp.fetch(url, [params]): 指定したURLへHTTP/HTTPSリクエストを送信し、通信結果として
HTTPResponseオブジェクトを返します。第二引数のオプションを省略した場合、デフォルトでGETリクエストとして処理されます。 - response.getContentText(): 受信した
HTTPResponseオブジェクトから、レスポンスのボディ(本文)をUTF-8文字列として抽出します。 - JSON.parse(text): 抽出したJSON形式のテキスト文字列を構文解析(パース)し、JavaScriptのオブジェクトや配列へと変換します。これにより、プロパティ名でデータにアクセス可能になります。
この一連の処理は、外部サービス(天気予報、株価情報、SaaSの顧客データなど)をGoogleスプレッドシートやGoogleドキュメントへ自動インポートする各種ツール開発における最も基礎的かつ重要な技術です。
落とし穴(レートリミットとパフォーマンスの問題): 多くのAPIサービスには「1分間に○回まで」といったリクエスト数の制限(レートリミット)が設けられています。GASの定期実行トリガーなどで高頻度にAPIを呼び出すと、API側からアクセスをブロックされ(HTTP 429 Errorなど)、処理が停止するリスクがあります。頻繁に変更されないデータを取り扱う場合は、GASのCacheServiceを用いて一時的にデータを保持する等のキャッシュ対策を実装してください。
実務での活用シーンとハマりポイント
業務自動化の現場において、このAPI呼び出し処理はさまざまな社内システム連携や情報収集のトリガーとして活用されます。具体的な適用例と、開発者が直面しやすい問題の回避策を解説します。
実務での具体的な活用シーン:
- Webデータ連携ダッシュボードの作成: 外部の統計データAPIから日次の数値を取得し、スプレッドシートのグラフを自動で最新状態にする。
- 社内SaaSツールの自動連携: ChatworkやSlack、kintoneなどのWeb APIへアクセスし、未処理タスクやユーザー情報を一覧として抽出する。
- 為替・市場価格データの自動取得: 為替レート変換APIを利用し、外貨建ての請求書データや購買価格を日本円に自動換算して保存する。
開発現場でのハマりポイントと回避策:
1. HTTPエラー時のプログラム異常終了(404 / 500エラー等): デフォルトのUrlFetchApp.fetch()は、レスポンスのステータスコードが200(成功)以外の場合、GAS上で例外を発生させて処理を強制停止させます。これを回避するには、fetchの第二引数に{ muteHttpExceptions: true }を設定します。これにより、エラー発生時でも処理を止めずにresponse.getResponseCode()でステータスコードを判定し、安全に例外処理を行うことが可能になります。
2. JSONパース時のSyntaxError(構文エラー): 取得したレスポンスがJSON形式ではない場合(認証エラーによりHTMLのエラーページが返ってきた場合や、レスポンスが空の場合など)、JSON.parse()の段階で構文エラーが発生します。パースを行う前に文字列が存在するか確認するか、try...catchブロック内でパース処理を保護することが実務上の安全な実装パターンです。
この処理の基本メカニズム
このデータ取得処理は、クライアント(GAS)と外部サーバー間で行われるHTTP通信の基本的な流れをモデル化しています。内部で行われている概念的な処理ステップは以下の通りです。
【ステップ1:エンドポイントの設定】
通信先となる外部APIのURL(エンドポイント)を定義します。必要に応じてクエリパラメーターなどをURLの末尾に結合し、リクエスト対象を明確にします。
【ステップ2:HTTPリクエストの送出(UrlFetchApp)】
GASのサーバー環境から指定したURLに向けてHTTP GETリクエストが送出されます。UrlFetchAppが暗黙的にネットワーク接続とレスポンス受領を管理します。
【ステップ3:レスポンス受信と文字列抽出】
通信が完了すると、サーバーから送信されたデータがHTTPResponseオブジェクトとして保持されます。この時点ではバイナリや生のテキストが混在しているため、getContentText()を実行してプログラムで扱える文字列型へと変換します。
【ステップ4:データ構造の復元(JSON.parse)】
単なる「文字の並び」であるJSON文字列を、JavaScriptが理解できる「オブジェクト構造」へと解析・変換します。このステップを経ることで、json.data[0].idといったドット記法を用いた直感的なデータ操作が可能になります。
※本記事は基本的なロジックおよび構文解説です。最新の仕様についてはGoogle Apps Script (GAS)の公式ドキュメントをご確認ください。

