Google Apps Script は、ウェブ上のあらゆる場所の API とやり取りできます。このガイドでは、スクリプトでさまざまな種類の API を使用する方法について説明します。
公開 API に接続する
UrlFetch サービスを使用して、API
リクエストを直接送信します。
次の例では、 GitHub API を 使用して、「Apps Script」に言及している 100 個以上のスターが付いたリポジトリを 検索します。この API リクエストには、承認または API キーは必要ありません。
var query = '"Apps Script" stars:">=100"';
var url = 'https://api.github.com/search/repositories'
+ '?sort=stars'
+ '&q=' + encodeURIComponent(query);
var response = UrlFetchApp.fetch(url, {'muteHttpExceptions': true});
Logger.log(response);
OAuth を使用してサービスにリクエストを送信する
ユーザーに代わって動作する API では、通常、 OAuth プロトコルを使用して承認が必要です。Apps Script には、このプロトコルの組み込みサポートはありませんが、OAuth フローを実行してリクエストとともに認証情報を送信するために使用できるオープンソース ライブラリがあります。
- Apps Script 用 OAuth1: OAuth 1.0 および 1.0a と互換性があります。
- Apps Script 用 OAuth2: OAuth2 と互換性があります。
サービス アカウントを使用して認証する
Apps Script から API を呼び出す場合、次のいずれかの理由でサービス アカウント認証を使用することがあります。
- Google Cloud APIs のパフォーマンスの向上
- 自動化と長時間実行タスク
- セキュリティの強化(最小権限)
- 一元化されたアクセス管理
Apps Script でサービス アカウントを使用するには、 サービス アカウントを使用して Apps Script プロジェクトとして認証するをご覧ください。
Google Cloud サービスに接続する
ScriptApp.getIdentityToken()
メソッドを使用して、有効なユーザーの
OpenID Connect
ID トークン(JSON ウェブトークン
または JWT)を取得できます。このトークンを使用して、受け入れるように構成された Cloud Run などの Google Cloud サービスで認証できます。
詳細については、Google Cloud サービスに接続するをご覧ください。
JSON を操作する
JSON オブジェクトの操作は XML の操作と似ていますが、JSON オブジェクトの解析やエンコードははるかに簡単です。
API が未加工の JSON レスポンスを返す場合は、
メソッド
HTTPResponse.getContentTextを使用して JSON 文字列レスポンスにアクセスします。
文字列を取得したら、JSON.parse() を使用して JavaScript オブジェクトに解析します。
// Make request to API and get response before this point.
var json = response.getContentText();
var data = JSON.parse(json);
Logger.log(data.title);
同様に、リクエスト ペイロードの JavaScript オブジェクトを JSON 文字列に変換するには、JSON.stringify() を使用します。
var data = {
'entry': {
'group': {
'title': 'Dog Skateboarding',
'description': 'My dog gets some serious air'
},
'keywords': 'dog, skateboard'
}
}
var payload = JSON.stringify(data);
// Make request to API with payload after this point.
XML を解析
外部 API がリクエストに対して未加工の XML レスポンスを返す場合は、
XML レスポンスを
HTTPResponse.getContentText() メソッドを使用してアクセスします。
// Make request to API and get response before this point.
var xml = response.getContentText();
var doc = XmlService.parse(xml);
API に XML リクエストを送信する場合は、
XmlService メソッドを使用して
送信する XML を作成します。
var root = XmlService.createElement('entry')
.setAttribute('keywords', 'dog, skateboard');
var group = XmlService.createElement('group')
.setAttribute('title', 'Dog Skateboarding')
.setAttribute('description', 'My dog gets some serious air');
root.addContent(group);
var document = XmlService.createDocument(root);
var payload = XmlService.getPrettyFormat().format(document);
// Make request to API with payload after this point.