Zewnętrzne interfejsy API

Google Apps Script może korzystać z interfejsów API z całego internetu. Z tego przewodnika dowiesz się, jak korzystać w skryptach z różnych typów interfejsów API.

Łączenie się 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:

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 odpowiedzi w postaci 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.