Google Apps Script może wchodzić w interakcje z interfejsami API z całego internetu. Z tego przewodnika dowiesz się, jak korzystać w skryptach z różnych typów interfejsów API.
Łączenie z publicznymi interfejsami API
Możesz użyć usługi UrlFetch
, aby wysyłać żądania interfejsu API bezpośrednio.
W tym przykładzie używamy interfejsu GitHub API do wyszukiwania repozytoriów z co najmniej 100 gwiazdkami, w których jest wzmianka o „Apps Script”. To żądanie interfejsu API nie wymaga autoryzacji ani klucza interfejsu 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 za pomocą 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 zapewnia wbudowanej obsługi tego protokołu, ale istnieją biblioteki open source, których możesz używać do przeprowadzania przepływu OAuth i wysyłania danych uwierzytelniających wraz z żądaniami:
- OAuth1 dla Apps Script: zgodny z OAuth 1.0 i 1.0a.
- OAuth2 w Apps Script: zgodny z OAuth2.
Praca z JSON
Praca z obiektami JSON jest podobna do pracy z XML, z tym że analizowanie lub kodowanie obiektu JSON jest znacznie łatwiejsze.
Jeśli interfejs API, do którego wysyłane jest żądanie, zwraca surową odpowiedź JSON, do ciągu znaków JSON można uzyskać dostęp za pomocą metody HTTPResponse.getContentText()
.
Po pobraniu tego ciągu wystarczy wywołać JSON.parse()
, aby uzyskać reprezentację obiektu natywnego.
// Make request to API and get response before this point.
var json = response.getContentText();
var data = JSON.parse(json);
Logger.log(data.title);
Podobnie, aby utworzyć ciąg znaków reprezentujący obiekt JavaScriptu w celu wysłania żądania, użyj 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 zwraca w odpowiedzi na żądanie nieprzetworzony kod XML, możesz uzyskać do niego dostęp za pomocą metody HTTPResponse.getContentText()
.
// Make request to API and get response before this point.
var xml = response.getContentText();
var doc = XmlService.parse(xml);
Podczas wysyłania żądań XML do interfejsu API utwórz XML do wysłania za pomocą 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.