外部 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.