外部 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 レスポンスを返す場合は、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.