外部 API

Google Apps 脚本可以与整个网络中的 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 脚本不提供对该协议的内置支持,但您可以使用一些开源库来执行 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.