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 レスポンスを返す場合、JSON 文字列レスポンスには HTTPResponse.getContentText() メソッドを使用してアクセスできます。この文字列を取得したら、文字列で JSON.parse() を呼び出すだけで、ネイティブ オブジェクト表現を取得できます。
// 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.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.