API externas

Google Apps Script puede interactuar con APIs de toda la Web. Usa esta guía para trabajar con diferentes tipos de APIs en tus secuencias de comandos.

Conéctate a APIs públicas

Usa el servicio UrlFetch para realizar solicitudes a la API directamente.

En el siguiente ejemplo, se usa la API de GitHub para buscar repositorios con 100 o más estrellas que mencionen "Apps Script". Esta solicitud a la API no requiere autorización ni una clave de 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);

Realiza solicitudes a servicios con OAuth

Las APIs que actúan en nombre de un usuario suelen requerir autorización, a menudo con el protocolo OAuth. Apps Script no proporciona compatibilidad integrada con el protocolo, pero existen bibliotecas de código abierto que puedes usar para realizar el flujo de OAuth y enviar las credenciales con tus solicitudes:

Autentica con una cuenta de servicio

Para llamar a una API desde Apps Script, puedes usar la autenticación de cuentas de servicio por cualquiera de los siguientes motivos:

  • Mejor rendimiento con las APIs de Google Cloud
  • Automatizaciones y tareas de larga duración
  • Mejor seguridad (privilegio mínimo)
  • Administración de acceso centralizada

Para usar una cuenta de servicio en Apps Script, consulta Cómo autenticarse como un proyecto de Apps Script con cuentas de servicio.

Conéctate a los servicios de Google Cloud

Puedes usar el método ScriptApp.getIdentityToken() para obtener un token de identidad de OpenID Connect (un token web JSON o JWT) para el usuario efectivo. Puedes usar este token para autenticarte en los servicios de Google Cloud, como Cloud Run, que están configurados para aceptarlo.

Para obtener más información, consulta Conéctate a los servicios de Google Cloud.

Trabaja con JSON

Trabajar con objetos JSON es similar a trabajar con XML, excepto que analizar o codificar un objeto JSON es mucho más fácil.

Cuando una API devuelve una respuesta JSON sin procesar, accede a la respuesta de cadena JSON con el método HTTPResponse.getContentText. Después de recuperar la cadena, usa JSON.parse() para analizarla y convertirla en un objeto JavaScript.

// Make request to API and get response before this point.
var json = response.getContentText();
var data = JSON.parse(json);
Logger.log(data.title);

Del mismo modo, para convertir un objeto JavaScript en una cadena JSON para una carga útil de solicitud, usa 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.

Analizar XML

Si una API externa devuelve una respuesta XML sin procesar para una solicitud, accede a la respuesta XML con el método HTTPResponse.getContentText().

// Make request to API and get response before this point.
var xml = response.getContentText();
var doc = XmlService.parse(xml);

Cuando realices solicitudes XML a una API, usa los métodos XmlService para construir el XML que se enviará.

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.