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 Web Token または 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 レスポンスを返す場合は、メソッド HTTPResponse.getContentText() を使用して XML レスポンスにアクセスします。
// 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.