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 に対応しています。
JSON を操作する
JSON オブジェクトの操作は XML の操作と似ていますが、JSON オブジェクトの解析やエンコードが非常に簡単になります。
リクエストされている API がリクエストの未加工の JSON レスポンスを返す場合、HTTPResponse.getContentText()
メソッドを使用して JSON 文字列レスポンスにアクセスできます。この文字列を取得したら、文字列に対して 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.