Googleスプレッドシートで外部のAPIからデータを取得したいと思ったことはありませんか。通常の関数だけではリアルタイムの株価や天気、外部サービスの情報を取得するのは難しいものです。Google Apps ScriptのUrlFetchAppを使えば、スプレッドシートから直接HTTPリクエストを送信でき、様々なAPIを呼び出せます。この記事では、UrlFetchAppの基本的な使い方から、APIキーの設定、エラーハンドリングまでを解説します。
【要点】UrlFetchAppでAPIを呼び出すための基本手順と注意点
- UrlFetchApp.fetch(url) でGETリクエスト: 指定したURLからデータを取得し、レスポンスをテキストやJSONとして扱えます。
- paramsオプションでPOSTやヘッダー指定: methodやheaders、payloadを設定することで、様々なHTTPメソッドや認証に対応します。
- JSON.parse()でレスポンスをパース: APIから返ってくるJSON形式のデータをスプレッドシートのセルに展開できます。
ADVERTISEMENT
目次
UrlFetchAppができることと基本の仕組み
UrlFetchAppは、Google Apps Scriptで提供されるHTTPクライアントです。スプレッドシートのセルに計算式を書くのではなく、スクリプトエディタでコードを記述して実行します。これにより、任意の外部API(天気予報、為替レート、SNSデータなど)にアクセスし、結果をシートに出力できます。基本的な流れは、スクリプトエディタを開き、UrlFetchApp.fetch()でリクエストを送り、レスポンスを処理してシートに書き込むという手順です。なお、普通のワークシート関数とは違い、トリガーやボタンで実行する必要があります。
外部APIを呼び出すための事前準備
APIを呼び出す前に、いくつかの準備が必要です。まず、利用したいAPIのエンドポイントURLと認証情報(APIキーなど)を確認します。APIキーはサービスごとに取得方法が異なりますが、多くの場合は無料で発行できます。次に、Googleスプレッドシートでスクリプトエディタを開く必要があります。メニューの「拡張機能」→「Apps Script」をクリックすると、別タブでエディタが開きます。ここでコードを記述します。
UrlFetchAppを使ったAPI呼び出しの手順
基本のGETリクエスト(JSONデータを取得)
- スクリプトエディタを開く
スプレッドシートのメニューから「拡張機能」→「Apps Script」を選択します。新しいプロジェクトが作成されます。 - 関数を記述する
以下のコードをエディタに貼り付けます。この例では、JSONPlaceholderのサンプルAPIから投稿データを取得します。function getPosts() {
var url = 'https://jsonplaceholder.typicode.com/posts';
var response = UrlFetchApp.fetch(url);
var json = JSON.parse(response.getContentText());
var sheet = SpreadsheetApp.getActiveSheet();
// ヘッダー行を追加
sheet.getRange(1,1,1,3).setValues([['userId','id','title']]);
// データをシートに書き込み
for (var i=0; isheet.getRange(i+2,1,1,3).setValues([[json[i].userId, json[i].id, json[i].title]]);
}
} - 関数を実行する
ツールバーの再生ボタン(▶)をクリックし、初回は権限の承認を求められます。承認後、シートにデータが書き込まれます。
POSTリクエストでデータを送信する
- POST用の関数を作成
以下のコードは、新しい投稿を作成するPOSTリクエストの例です。function createPost() {
var url = 'https://jsonplaceholder.typicode.com/posts';
var payload = {
title: 'foo',
body: 'bar',
userId: 1
};
var options = {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify(payload)
};
var response = UrlFetchApp.fetch(url, options);
Logger.log(response.getContentText());
} - 実行と結果確認
実行後、メニューの「表示」→「ログ」でレスポンスを確認できます。
APIキーを使用した認証付きリクエスト
- ヘッダーにAPIキーを設定
例えば、OpenWeatherMapのAPIを呼び出す場合、以下のようにheadersオプションを追加します。function getWeather() {
var apiKey = 'YOUR_API_KEY';
var city = 'Tokyo';
var url = 'https://api.openweathermap.org/data/2.5/weather?q=' + city + '&appid=' + apiKey;
var response = UrlFetchApp.fetch(url);
var json = JSON.parse(response.getContentText());
Logger.log(json.main.temp);
} - APIキーを安全に管理
スクリプト内にキーを直接書くと漏洩リスクがあります。スクリプトのプロパティサービスを利用し、PropertiesService.getScriptProperties()で保存・取得すると安全です。
ADVERTISEMENT
UrlFetchApp使用時の注意点とよくあるエラー
リクエスト制限に注意する
UrlFetchAppには1日あたりの呼び出し制限があります。Googleアカウントの種類によって異なりますが、無料アカウントでは1日あたり20,000回までです。大量のリクエストが必要な場合は、Utilities.sleep()で間隔を空けるなどの対処が必要です。
エラーハンドリングを実装しよう
APIがダウンしている場合や、ネットワークエラーが発生した場合、UrlFetchApp.fetch()は例外をスローします。try…catch文を使ってエラーを補足し、ユーザーに分かりやすいメッセージを表示することをおすすめします。
CORS制約は関係ない
ブラウザのJavaScriptではCORS制約がありますが、UrlFetchAppはサーバー側で実行されるため、CORSの影響を受けません。そのため、任意のドメインのAPIにアクセスできます。ただし、API側でIP制限をかけている場合は、GoogleのサーバーIPが許可されているかを確認してください。
UrlFetchAppとIMPORTDATA関数の比較
| 機能 | UrlFetchApp | IMPORTDATA関数 |
|---|---|---|
| 実行環境 | スクリプトエディタでコード実行 | セルに数式を入力 |
| 対応メソッド | GET, POST, PUT, DELETEなど | GETのみ |
| 認証・ヘッダー | 自由に設定可能 | 設定不可 |
| 戻り値の形式 | テキスト、JSONなど自由にパース | CSV形式のみ |
| リクエスト制限 | 1日あたりの呼び出し回数制限あり | 1日あたりの読み込み制限あり |
まとめ
UrlFetchAppを使えば、Googleスプレッドシートから外部APIに柔軟にアクセスできます。基本的なGETリクエストから、POST、認証付きリクエストまで、コードを書くことで自由にデータを取得・送信できます。最初はサンプルコードを動かしながら、徐々に自分の用途に合わせてカスタマイズしてみてください。特にAPIキーの管理やエラーハンドリングを適切に行うことで、安定した自動化が実現します。次は、スクリプトをトリガーで定期実行する方法や、他のGoogleサービス(Gmail、カレンダー)との連携にも挑戦してみましょう。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
