外部 API

Google Apps Script は、ウェブ全体から API と対話できます。このガイド は、スクリプトでさまざまなタイプの API を操作する方法を示しています。

公開 API に接続する

UrlFetch サービスを使用すると、次のことを行えます。 API リクエストを直接実行できます。

次の例では GitHub API から 100 個以上のスターが付いているリポジトリで、「Apps Script」に言及しているものがないか探します。 この 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.