外部 API

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 フローを実行してリクエストで認証情報を送信するために使用できるオープンソース ライブラリがあります。

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.