外部 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.
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-08-31 (世界標準時間)。
[null,null,["上次更新時間:2025-08-31 (世界標準時間)。"],[[["\u003cp\u003eGoogle Apps Script enables interaction with various web APIs using the \u003ccode\u003eUrlFetch\u003c/code\u003e service for direct API requests.\u003c/p\u003e\n"],["\u003cp\u003eFor user-centric APIs requiring authorization, utilize open-source libraries like OAuth1 or OAuth2 for Apps Script to manage the OAuth flow.\u003c/p\u003e\n"],["\u003cp\u003eApps Script simplifies working with JSON responses through \u003ccode\u003eJSON.parse()\u003c/code\u003e for converting raw JSON into native objects and \u003ccode\u003eJSON.stringify()\u003c/code\u003e for the reverse.\u003c/p\u003e\n"],["\u003cp\u003eHandle XML responses from APIs using \u003ccode\u003eHTTPResponse.getContentText()\u003c/code\u003e and the \u003ccode\u003eXmlService\u003c/code\u003e for parsing and constructing XML data.\u003c/p\u003e\n"]]],[],null,["# External APIs\n\nGoogle Apps Script can interact with APIs from all over the web. This guide\nshows how to work with different types of APIs in your scripts.\n\nConnect to public APIs\n----------------------\n\nYou can use the [`UrlFetch`](/apps-script/reference/url-fetch) service to make\nAPI requests directly.\n\nThe following example uses the\n[GitHub API](https://developer.github.com/v3/search/#search-repositories) to\nsearch for repositories with 100 or more stars that mention \"Apps Script\".\nThis API request does not require authorization or an API key. \n\n var query = '\"Apps Script\" stars:\"\u003e=100\"';\n var url = 'https://api.github.com/search/repositories'\n + '?sort=stars'\n + '&q=' + encodeURIComponent(query);\n\n var response = UrlFetchApp.fetch(url, {'muteHttpExceptions': true});\n Logger.log(response);\n\nMake requests to services with OAuth\n------------------------------------\n\nAPIs that act on behalf of a user usually require authorization, often using the\n[OAuth protocol](http://oauth.net/). Apps Script doesn't provide built-in\nsupport for the protocol, but there are open source libraries you can use to\nperform the OAuth flow and send the credentials with your requests:\n\n- [OAuth1 for Apps Script](https://github.com/googlesamples/apps-script-oauth1): Compatible with OAuth 1.0 and 1.0a.\n- [OAuth2 for Apps Script](https://github.com/googlesamples/apps-script-oauth2): Compatible with OAuth2.\n\nWork with JSON\n--------------\n\nWorking with JSON objects is similar to working with XML, except that parsing or\nencoding a JSON object is much easier.\n\nIf the API being requested returns a raw JSON response for a request, the JSON\nstring response can be accessed using the method\n[`HTTPResponse.getContentText()`](/apps-script/reference/url-fetch/http-response#getContentText()).\nOnce this string is retrieved, simply call `JSON.parse()` on the string to get a\nnative object representation. \n\n // Make request to API and get response before this point.\n var json = response.getContentText();\n var data = JSON.parse(json);\n Logger.log(data.title);\n\nLikewise, to make a string representation of a JavaScript object in order to\nmake a request, use `JSON.stringify()`. \n\n var data = {\n 'entry': {\n 'group': {\n 'title': 'Dog Skateboarding',\n 'description': 'My dog gets some serious air'\n },\n 'keywords': 'dog, skateboard'\n }\n }\n var payload = JSON.stringify(data);\n // Make request to API with payload after this point.\n\nParse XML\n---------\n\nIf an external API returns a raw XML response for a request, you can access the\nXML response using the method\n[`HTTPResponse.getContentText()`](/apps-script/reference/url-fetch/http-response#getContentText()). \n\n // Make request to API and get response before this point.\n var xml = response.getContentText();\n var doc = XmlService.parse(xml);\n\nWhen making XML requests to an API, construct the XML to send by using\nthe [`XmlService`](/apps-script/reference/xml-service/xml-service) methods. \n\n var root = XmlService.createElement('entry')\n .setAttribute('keywords', 'dog, skateboard');\n var group = XmlService.createElement('group')\n .setAttribute('title', 'Dog Skateboarding');\n .setAttribute('description', 'My dog gets some serious air');\n root.addContent(group);\n var document = XmlService.createDocument(root);\n var payload = XmlService.getPrettyFormat().format(document);\n // Make request to API with payload after this point."]]