Google Apps 脚本可与整个网络中的 API 进行交互。本指南 介绍了如何在脚本中使用不同类型的 API。
连接到公共 API
您可以使用 UrlFetch
服务直接发出 API 请求。
以下示例使用 GitHub API 至 搜索包含 100 星或以上提及“Apps 脚本”的代码库。 此 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 流程并将凭据随请求一起发送:
- 适用于 Apps 脚本的 OAuth1: 与 OAuth 1.0 和 1.0a 兼容。
- 适用于 Apps 脚本的 OAuth2: 与 OAuth2 兼容。
使用 JSON
使用 JSON 对象与使用 XML 类似,不同之处在于使用 JSON 来解析或 对 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.