Google Apps Script может взаимодействовать с API из самых разных уголков интернета. В этом руководстве показано, как работать с различными типами API в ваших скриптах.
Подключайтесь к общедоступным API
Вы можете использовать сервис UrlFetch для прямого выполнения запросов к API.
В следующем примере используется API GitHub для поиска репозиториев со 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 и отправки учетных данных вместе с запросами:
- OAuth1 для Apps Script : совместим с OAuth 1.0 и 1.0a.
- OAuth2 для Apps Script : Совместимо с OAuth2.
Аутентификация с использованием служебной учетной записи.
Для вызова API из Apps Script вы можете использовать аутентификацию по служебной учетной записи по одной из следующих причин:
- Повышение производительности благодаря API Google Cloud.
- Автоматизация и длительные задачи
- Повышенная безопасность (принцип минимальных привилегий)
- Централизованное управление доступом
Чтобы использовать учетную запись службы в Apps Script, см. раздел «Аутентификация проекта Apps Script с помощью учетных записей служб» .
Работа с 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);
При отправке 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.