外部 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 レスポンスを返す場合、 メソッドを使用した XML レスポンス HTTPResponse.getContentText()

// Make request to API and get response before this point.
var xml = response.getContentText();
var doc = XmlService.parse(xml);

API に XML リクエストを行う場合は、 XmlService メソッド

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.