Google Apps Script może współpracować z interfejsami API z całego internetu. W tym przewodniku dowiesz się, jak pracować w swoich skryptach z różnymi typami interfejsów API.
Łączenie z publicznymi interfejsami API
Możesz używać usługi UrlFetch
do bezpośredniego wysyłania żądań do interfejsu API.
W tym przykładzie używany jest interfejs GitHub API do wyszukiwania repozytoriów z co najmniej 100 gwiazdkami, które zawierają wzmiankę o „Apps Script”. To żądanie interfejsu API nie wymaga autoryzacji ani klucza 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);
Wysyłanie żądań do usług przy użyciu protokołu OAuth
Interfejsy API, które działają w imieniu użytkownika, zwykle wymagają autoryzacji, często za pomocą protokołu OAuth. Apps Script nie obsługuje tego protokołu w ramach wbudowanych funkcji, ale istnieją biblioteki open source, których możesz użyć do wykonania procesu OAuth i przesłania danych logowania wraz z żądaniami:
- OAuth1 dla Apps Script: zgodny z OAuth 1.0 i 1.0a.
- OAuth2 w Apps Script: zgodny z protokołem OAuth2.
Praca z plikami JSON
Praca z obiektmi JSON jest podobna do pracy z obiektmi XML, z tym wyjątkiem, że parsowanie lub kodowanie obiektu JSON jest znacznie łatwiejsze.
Jeśli żądany interfejs API zwraca na żądanie nieprzetworzoną odpowiedź JSON, odpowiedź w postaci ciągu JSON można uzyskać za pomocą metody HTTPResponse.getContentText()
.
Po pobraniu tego ciągu wystarczy wywołać metodę JSON.parse()
, aby uzyskać natywny obiekt.
// Make request to API and get response before this point.
var json = response.getContentText();
var data = JSON.parse(json);
Logger.log(data.title);
Aby utworzyć reprezentacje ciągu znaków obiektu JavaScript, który ma służyć do wysłania żądania, użyj funkcji 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.
Analizuj XML
Jeśli zewnętrzny interfejs API zwróci nieprzetworzoną odpowiedź XML na żądanie, możesz uzyskać do niej dostęp, używając metody HTTPResponse.getContentText()
.
// Make request to API and get response before this point.
var xml = response.getContentText();
var doc = XmlService.parse(xml);
Wysyłając żądania XML do interfejsu API, utwórz plik XML do wysłania, korzystając z metod 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.