Skrypt Google Apps Script może korzystać z interfejsów API z całego internetu. Ten przewodnik pokazuje, jak pracować z różnymi typami interfejsów API w skryptach.
Łączenie z publicznymi interfejsami API
Możesz wysyłać żądania do interfejsu API bezpośrednio za pomocą usługi UrlFetch
.
Poniższy przykład pokazuje użycie interfejsu GitHub API do wyszukiwania repozytoriów mających co najmniej 100 gwiazdek, które wspominają o „Google Apps Script” – Żądanie 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 działające w imieniu użytkownika zwykle wymagają autoryzacji, często z użyciem protokołu OAuth. Apps Script nie zapewnia wbudowanej obsługi protokołu, ale dostępne są biblioteki open source, których możesz użyć do obsługi procesu OAuth i wysyłania danych logowania wraz z żądaniami:
- OAuth1 for Apps Script (Protokół OAuth1 na potrzeby Apps Script): obsługa OAuth 1.0 i 1.0a.
- OAuth2 for Apps Script (Protokół OAuth2 na potrzeby Apps Script): zgodny z OAuth2.
Praca z JSON
Praca z obiektami JSON przypomina pracę z plikiem XML, z tą różnicą, że analizowanie i kodowanie obiektu JSON jest o wiele łatwiejsze.
Jeśli żądanie API zwraca nieprzetworzoną odpowiedź JSON żądania, można uzyskać dostęp do odpowiedzi w formacie JSON za pomocą metody HTTPResponse.getContentText()
.
Po pobraniu tego ciągu wystarczy wywołać ciąg JSON.parse()
, by 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);
I podobnie, aby utworzyć ciąg znaków reprezentujący obiekt JavaScript 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 zwróci nieprzetworzoną odpowiedź XML żądania, możesz uzyskać dostęp do odpowiedzi XML za pomocą metody HTTPResponse.getContentText()
.
// Make request to API and get response before this point.
var xml = response.getContentText();
var doc = XmlService.parse(xml);
Przesyłając żądania XML do interfejsu API, utwórz kod XML, 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.