API de terceros

Una función eficaz de las secuencias de comandos de Google Ads es la capacidad de integrarse con los datos y servicios de APIs de terceros.

Esta guía abarca los siguientes conceptos que pueden ayudarte a escribir scripts para conectarse a otros servicios:

  • Realizar solicitudes HTTP: Cómo usar UrlFetchApp para acceder APIs externas.
  • Autenticación: Abordamos algunas situaciones de autenticación comunes.
  • Análisis de respuestas: Cómo procesar los datos JSON y XML que se muestran

También incluimos samples para un número de APIs populares que ilustran estos conceptos.

Recupera datos con UrlFetchApp

UrlFetchApp proporciona la funcionalidad principal necesaria para interactuar con APIs de terceros.

En el siguiente ejemplo, se muestra la recuperación de datos del clima de OpenWeatherMap. Elegimos OpenWeatherMap debido a su esquema de autorización y su API relativamente sencillos.

Haz una solicitud

La documentación de OpenWeatherMap especifica la formato para solicitar el pronóstico del tiempo actual de la siguiente manera:

http://api.openweathermap.org/data/2.5/weather?q=[location]&apikey=[apikey]

La URL proporciona nuestro primer ejemplo de autorización: el parámetro apikey es se requieren y el valor es único para cada usuario. Esta clave se obtiene a través de registrarse.

Después del registro, se puede enviar una solicitud con la clave de la siguiente manera:

const location = 'London,uk';
const apikey = 'da.......................81'; // Replace with your API key
const currentWeatherUrl = `http://api.openweathermap.org/data/2.5/weather?q=${location}&apiKey=${apiKey}`;
const response = UrlFetchApp.fetch(currentWeatherUrl);
console.log(response.getContentText());

La ejecución de este código da como resultado una string larga de JSON el texto escrito en la ventana de registro de las secuencias de comandos de Google Ads.

El próximo paso es convertir esto a un formato que se pueda usar en tu secuencia de comandos.

Datos JSON

Muchas APIs proporcionan respuestas en formato JSON. Esto representa un simple serialización de objetos de JavaScript, como los objetos, arrays y tipos básicos pueden representarse y transferirse como cadenas.

Para convertir una cadena JSON, como la que se muestra en OpenWeatherMap: de vuelta en un objeto de JavaScript, usa el lenguaje JSON.parse. Continuando con el ejemplo anterior:

const json = response.getContentText();
const weatherData = JSON.parse(json);
console.log(weatherData.name);
//  "London"

El método JSON.parse convierte la cadena en un objeto que tiene una propiedad. name

Consulta la sección Analizar respuestas para obtener más detalles sobre trabajar con respuestas de la API en diferentes formatos.

Manejo de errores

El manejo de errores es una consideración importante cuando se trabaja con APIs de terceros en sus secuencias de comandos, ya que las APIs de terceros suelen cambiar con frecuencia valores de respuesta inesperados, por ejemplo:

  • La URL o los parámetros de la API pueden cambiar sin que lo sepas.
  • Tu clave de API (o cualquier otra credencial de usuario) puede vencer.
  • El formato de la respuesta puede cambiar sin previo aviso.

Códigos de estado HTTP

Debido a la posibilidad de que haya respuestas inesperadas, deberías inspeccionar el archivo HTTP código de estado. De forma predeterminada, UrlFetchApp arrojará una excepción si se encuentra un código de error de HTTP. Para cambiar este comportamiento, es necesario pasar un parámetro opcional, como en el siguiente ejemplo:

const options = {
  muteHttpExceptions: true
}
const response = UrlFetchApp.fetch(url, options);
// Any status code greater or equal to 400 is either a client or server error.
if (response.getResponseCode() >= 400) {
  // Error encountered, send an email alert to the developer
  sendFailureEmail();
}

Estructura de la respuesta

Cuando las APIs de terceros cambian, los desarrolladores no suelen saber cambios que podrían afectar sus secuencias de comandos. Por ejemplo, si la propiedad name que se muestra en el ejemplo de OpenWeatherMap se cambió a locationName, las secuencias de comandos usar esta propiedad fallará.

Por esta razón, puede ser beneficioso probar si la estructura devuelta es como esperabas, por ejemplo:

const weatherData = JSON.parse(json);
if (weatherData && weatherData.name) {
  console.log('Location is : ' + name);
} else {
  console.log('Data not in expected format');
}

Datos de POST con UrlFetchApp

El ejemplo introductorio con OpenWeatherMap solo los datos recuperados. Por lo general, las llamadas a la API que no cambian de estado a nivel remoto usa la clase HTTP GET .

El método GET es el valor predeterminado para UrlFetchApp. Sin embargo, algunas llamadas a la API, como las llamadas a un servicio que envía SMS, requerirá otros métodos como POST o PUT.

A continuación, se muestra un ejemplo del uso de llamadas a POST con UrlFetchApp: demuestra integración con Slack, un servicio de mensajería para enviar un mensaje de Slack a los usuarios y grupos de Slack.

Configura Slack

En esta guía, se supone que ya te registraste para obtener una cuenta de Slack.

Al igual que con OpenWeatherMap en el ejemplo anterior, es necesario obtener un token para habilitar el envío de mensajes. Slack proporciona una URL única para que puedas enviar mensajes a tu equipo, llamado webhook entrante.

Configurar un webhook entrante haciendo clic en Agrega la integración de webhooks entrantes y sigue las instrucciones. El debería emitir una URL para usar en los mensajes.

Realiza una solicitud POST

Una vez que hayas configurado tu webhook entrante, realizar una solicitud POST simplemente requerirá que el uso de algunas propiedades adicionales en el parámetro options que se pasa a UrlFetchApp.fetch:

  • method: Como se mencionó, el valor predeterminado es GET, pero aquí lo anulamos y establécelo en POST.
  • payload: Estos son los datos que se enviarán al servidor como parte del POST. para cada solicitud. En este ejemplo, Slack espera un objeto serializado en formato JSON. como se describe en la sección documentación. Para ello, la JSON.stringify se usa el método, y Content-Type se establece en application/json.

      // Change the URL for the one issued to you from 'Setting up Slack'.
      const SLACK_URL = 'https://hooks.slack.com/services/AAAA/BBBB/CCCCCCCCCC';
      const slackMessage = {
        text: 'Hello, slack!'
      };
    
      const options = {
        method: 'POST',
        contentType: 'application/json',
        payload: JSON.stringify(slackMessage)
      };
      UrlFetchApp.fetch(SLACK_URL, options);
    

Ejemplo de Slack extendido

En el ejemplo anterior, se muestra el mínimo para habilitar los mensajes entrantes en Slack. Los sample ampliado ilustra el la creación y el envío de una solicitud de Rendimiento de la campaña Denuncia a un grupo, así como algunas opciones de formato y visualización.

Mensaje entrante

Consulta el formato de mensajes en Slack para obtener más detalles sobre los mensajes de Slack.

Datos de formulario

En el ejemplo anterior, se mostró el uso de una string JSON como la propiedad payload para la solicitud POST.

Según el formato de payload, UrlFetchApp adopta enfoques diferentes. para construir la solicitud POST:

  • Cuando payload es una cadena, el argumento de cadena se envía como el el cuerpo de la solicitud.
  • Cuando payload es un objeto (por ejemplo, un mapa de valores):

    {to: 'mail@example.com', subject:'Test', body:'Hello, World!'}
    

    Los pares clave-valor se convierten en datos de formulario:

    subject=Test&to=mail@example.com&body=Hello,+World!
    

    También se establece el encabezado Content-Type para la solicitud en application/x-www-form-urlencoded

Algunas APIs requieren el uso de datos de formulario para enviar solicitudes POST. la conversión automática de objetos JavaScript a formularios de datos es útil. tener en cuenta.

Autenticación básica HTTP

HTTP básico la autenticación es una de son las formas de autenticación más simples y las usan muchas APIs.

La autenticación se logra adjuntando un nombre de usuario y una contraseña codificados al encabezados HTTP en cada solicitud.

Autenticación básica HTTP

Crea una solicitud

Los siguientes pasos son necesarios para producir una solicitud autenticada:

  1. Para formar la frase de contraseña, une el nombre de usuario y la contraseña con una dos puntos, por ejemplo, username:password.
  2. La frase de contraseña codificada en Base64, por ejemplo, username:password se convierte en dXNlcm5hbWU6cGFzc3dvcmQ=
  3. Adjunta un encabezado Authorization a la solicitud con el formato Authorization: Basic <encoded passphrase>.

En el siguiente fragmento, se muestra cómo lograrlo en las secuencias de comandos de Google Ads:

const USERNAME = 'your_username';
const PASSWORD = 'your_password';
const API_URL = 'http://<place_api_url_here>';

const authHeader = 'Basic ' + Utilities.base64Encode(USERNAME + ':' + PASSWORD);
const options = {
  headers: {Authorization: authHeader}
}
// Include 'options' object in every request
const response = UrlFetchApp.fetch(API_URL, options);

Muestras de autenticación básica

Las muestras de código contiene dos ejemplos que ilustran el uso de la autenticación básica HTTP:

Plivo

Plivo es un servicio que facilita el envío y la recepción de mensajes SMS a través de su API. En este ejemplo, se ilustra el envío mensajes nuevos.

  1. Regístrate con Plivo.
  2. Pega la secuencia de comandos de muestra en una nueva secuencia de comandos en Google Ads.
  3. Reemplaza los valores PLIVO_ACCOUNT_AUTHID y PLIVO_ACCOUNT_AUTHTOKEN por el del panel de administración.
  4. Ingresa tu dirección de correo electrónico como se especifica en la secuencia de comandos para la notificación de errores.
  5. Para usar Plivo, debes comprar números o agregarlos a la prueba de servicio predeterminada. Agrega números de zona de pruebas que puedan usarse con la cuenta de prueba.
  6. Agrega el número que aparecerá como remitente y el destinatario. de la fila.
  7. Actualiza PLIVO_SRC_PHONE_NUMBER en la secuencia de comandos a uno de los números de la zona de pruebas. te acabas de registrar. Esto debe incluir el código de país internacional para ejemplo 447777123456 para un número del Reino Unido.

Twilio

Twilio es otro servicio que facilita el envío y la recepción de mensajes SMS a través de su API. En este ejemplo, se ilustra el envío mensajes nuevos.

  1. Regístrate con Twillio.
  2. Pega la secuencia de comandos de muestra. en una nueva secuencia de comandos en Google Ads.
  3. Reemplaza los valores TWILIO_ACCOUNT_SID y TWILIO_ACCOUNT_AUTHTOKEN por el que se muestran en la página de la consola de la cuenta.
  4. Reemplaza TWILIO_SRC_PHONE_NUMBER por el número del panel: este es el número autorizado por Twilio para enviar mensajes.

OAuth 1.0

Muchos servicios populares usan OAuth para la autenticación. OAuth incluye varias diferentes tipos y versiones.

Mientras que con la autenticación básica de HTTP, un usuario solo tiene un nombre de usuario y una contraseña, OAuth permite que las aplicaciones acceso a la cuenta y los datos de un usuario mediante credenciales específicas de una aplicación de terceros. Además, el alcance del acceso específicas de esa aplicación.

Para obtener más información sobre OAuth 1.0, consulta la guía principal de OAuth. En particular, consulta 6. Autenticación con OAuth. Entero de tres patas OAuth 1.0, el proceso es el siguiente:

  1. La aplicación ("Consumidor") obtiene un token de solicitud.
  2. El usuario autoriza el token de solicitud.
  3. La aplicación intercambia el token de solicitud por un token de acceso.
  4. Para todas las solicitudes de recursos posteriores, el token de acceso se usa en un para cada solicitud.

Para que los servicios de terceros usen OAuth 1.0 sin interacción del usuario (por ejemplo, como se requeriría en las secuencias de comandos de Google Ads) los pasos 1, 2 y 3 no son posibles. Por lo tanto, algunos servicios emiten un token de acceso desde su configuración en la consola de Cloud, lo que permite que la aplicación vaya al paso 4 directamente. Esto se conoce como de OAuth 1.0 en una etapa.

OAuth1

OAuth 1.0 en secuencias de comandos de Google Ads

En el caso de las secuencias de comandos de Google Ads, cada una de ellas suele interpretarse como una aplicación. A través de la página de configuración de la consola/administración del servicio, se suele necesario para:

  • Establece una configuración de la aplicación para representar la secuencia de comandos.
  • Especifica los permisos que se extenderán a la secuencia de comandos.
  • Obtener la clave de consumidor, el secreto de consumidor, el token de acceso y el secreto de acceso para su uso con OAuth de un segmento.

OAuth 2.0

Las API más populares usan OAuth 2.0 para proporcionar acceso a de los datos del usuario. El propietario de una cuenta para un determinado subsidio de servicios de terceros permiso a aplicaciones específicas para permitirles acceder a los datos del usuario. El ventajas son que el propietario:

  • No es necesario que compartan las credenciales de su cuenta con la aplicación.
  • Puedes controlar qué aplicaciones tienen acceso a los datos de manera individual y hasta qué punto. (Por ejemplo, el acceso otorgado puede ser de solo lectura o solo a una subconjunto de los datos).

Para utilizar los servicios habilitados para OAuth 2.0 en las secuencias de comandos de Google Ads, existen varias pasos:

Fuera de tu secuencia de comandos

Otorga autorización para que las secuencias de comandos de Google Ads accedan a tus datos de usuario a través del API de terceros. En la mayoría de los casos, esto implicará configurar un application en la consola del servicio de terceros. Esta aplicación representa tu secuencia de comandos de Google Ads.

Usted especifica qué derechos de acceso debe tener la aplicación de Google Ads Script. y, por lo general, se le asignará un ID de cliente. Esto te permite, mediante OAuth 2 para controlar qué aplicaciones tienen acceso a tus datos en la y qué aspectos de esos datos pueden ver o modificar.

En tu guion

Autoriza con el servidor remoto. Según el tipo de otorgamiento, la un conjunto de pasos diferente, conocido como flujo, deberá se seguirá, pero en última instancia se generará un token de acceso que se usará para esa sesión en todas las solicitudes posteriores.

Realiza solicitudes a la API. Pasa el token de acceso con cada solicitud.

Flujos de autorización

Cada tipo de otorgamiento y el flujo correspondiente se adaptan a diferentes situaciones de uso. Para ejemplo, se usa un flujo diferente cuando un usuario participa en una a diferencia de una situación en la que se requiere que una aplicación se ejecute en segundo plano sin la presencia del usuario.

Los proveedores de API decidirán qué tipos de otorgamientos aceptan, lo que servirá de guía cómo procede el usuario con la integración de su API.

Implementación

Para los diferentes flujos de OAuth, el objetivo es obtener un token de acceso se puede usar durante el resto de la sesión para autenticar solicitudes.

Una biblioteca de muestra ilustra cómo autenticarse para cada tipo de flujo diferente. Cada uno de estos método muestra un objeto que obtiene y almacena el token de acceso. y facilita las solicitudes autenticadas.

El patrón de uso general es el siguiente:

// Authenticate using chosen flow type
const urlFetchObj = OAuth2.<flow method>(args);
// Make request(s) using obtained object.
const response1 = urlFetchObj.fetch(url1);
const response2 = urlFetchObj.fetch(url2, options);

Otorgamiento de credenciales de cliente

El otorgamiento de credenciales de cliente es una de las formas más simples de flujo de OAuth2, en la que la aplicación intercambia un un ID y un secreto, únicos de la aplicación, a cambio de la emisión de un token de acceso por tiempo limitado.

Credencial de cliente

// Access token is obtained and cached.
const authUrlFetch = OAuth2.withClientCredentials(
    tokenUrl, clientId, clientSecret, optionalScope));
// Use access token in each request
const response = authUrlFetch.fetch(url);
// ... use response

Otorgamiento de token de actualización

El otorgamiento del token de actualización es similar al otorgamiento de las credenciales del cliente, en la medida en que una solicitud simple al servidor mostrará un token de acceso que puede usarse en la sesión.

Token de actualización

Obtén un token de actualización

La diferencia con el otorgamiento del token de actualización es que, mientras que los detalles necesarios para la concesión de credenciales de cliente provienen de la configuración de la aplicación (por ejemplo, en el panel de control del servicio), se otorga el token de actualización como parte de un flujo más complejo, como un código de autorización otorgar, que requerirá que el usuario interacción:

Código de autorización

Usa OAuth Playground para obtener un token de actualización

OAuth2 Playground proporciona una IU que permite al usuario para recorrer el código de autorización otorgado y obtener un token de actualización.

El botón de configuración en la parte superior derecha te permite definir todos los parámetros. para usar en el flujo de OAuth, que incluye lo siguiente:

  • Extremo de autorización: Se usa como el inicio del flujo de autorización.
  • Extremo del token: Se usa con el token de actualización para obtener un token de acceso.
  • ID de cliente y secreto: Credenciales para la aplicación

OAuth Playground

Cómo usar una secuencia de comandos para obtener un token de actualización

En la token de actualización generación muestra.

Uso del token de actualización

Una vez que se realiza la autorización inicial, los servicios pueden emitir una actualización token, que luego se puede usar de manera similar al flujo de credenciales del cliente. A continuación, se brindan dos ejemplos:

const authUrlFetch = OAuth2.withRefreshToken(tokenUrl, clientId, clientSecret,
    refreshToken, optionalScope);
const response = authUrlFetch.fetch(url);
// ... use response

Ejemplo de Search Ads 360

Search Ads 360 es un ejemplo de una API que se puede usar con un token de actualización. En esta muestra, una secuencia de comandos genera y muestra un informe. Consulte el Centro de Referencia de la API de 360 para obtener todos los detalles de otras acciones que se puede realizar.

Crea la secuencia de comandos
  1. Crea un proyecto nuevo en la Consola de APIs. y obtener un ID de cliente, un secreto de cliente y un token de actualización siguiendo las de la guía de DoubleClick, asegurándote de que habilites la API de DoubleClick Search.
  2. Pega la muestra secuencia de comandos en una nueva secuencia de comandos en Google Ads.
  3. Pega la muestra OAuth2 de muestra biblioteca debajo de la de una ficha de Play Store.
  4. Modifica la secuencia de comandos para que contenga los valores correctos para el ID de cliente, el secreto del cliente y un token de actualización.

Ejemplo de la API de ejecución de Apps Script

Este ejemplo ilustra la ejecución de una función en Apps Script usando el comando Apps API de Script Execution. Esto permite que Apps Script llamar desde las secuencias de comandos de Google Ads.

Crea una secuencia de comandos de Apps Script

Crea una secuencia de comandos nueva. En el siguiente ejemplo, se enumerarán 10 archivos de Drive:

function listFiles() {
  const limit = 10;
  const files = [];
  const fileIterator = DriveApp.getFiles();
  while (fileIterator.hasNext() && limit) {
    files.push(fileIterator.next().getName());
    limit--;
  }
  return files;
}
Configura Apps Script para la ejecución
  1. Guarda la secuencia de comandos.
  2. Haz clic en Recursos > Proyecto de Cloud Platform
  3. Haz clic en el nombre del proyecto para navegar hasta la Consola de APIs.
  4. Navega a APIs & Servicios
  5. Habilita las APIs adecuadas; en este caso, Drive la API de Google Workspace y la de Aplicaciones Ejecución de secuencia de comandos de la API.
  6. Crea credenciales de OAuth desde el elemento Credenciales en el menú.
  7. De vuelta en la secuencia de comandos, publícala para su ejecución desde Publicar > Implementar como ejecutable de API
Crea la secuencia de comandos de Google Ads
  1. Pega la muestra secuencia de comandos una nueva secuencia de comandos en Google Ads.
  2. Además, pega el archivo OAuth2 de muestra biblioteca debajo de la de una ficha de Play Store.
  3. Modifica la secuencia de comandos para que contenga los valores correctos para el ID de cliente, el secreto del cliente y un token de actualización.

Cuentas de servicio

Una alternativa a los tipos de otorgamientos anteriores es el concepto de servicio .

Las cuentas de servicio se diferencian de lo anterior en que no se usan para acceder a datos: Después de la autenticación, la cuenta de servicio realiza las solicitudes en nombre. de la aplicación, no como el usuario que podría ser el propietario del proyecto. Por ejemplo, la cuenta de servicio usaran la API de Drive para crear un archivo, esto pertenezcan a la cuenta de servicio y, de forma predeterminada, el propietario del proyecto.

Ejemplo de la API de Google Natural Language

La API de Natural Language proporciona opinión análisis y entidad de texto para texto.

En este ejemplo, se ilustra cómo calcular la opinión para el texto del anuncio, incluido el título o la descripción. Esto proporciona una medida para cuán positivo es el mensaje y la magnitud del mensaje: ¿qué es mejor, Vendemos pasteles o vendemos los mejores pasteles en Londres. Comprar hoy mismo

Configura la secuencia de comandos
  1. Crea un proyecto nuevo en la Consola de APIs
  2. Habilita Natural Language API
  3. Habilitar la facturación para el proyecto
  4. Crea un servicio Cuenta. Descarga el archivo JSON de credenciales.
  5. Pega la muestra secuencia de comandos en una nueva secuencia de comandos en Google Ads.
  6. Además, pega el archivo OAuth2 de muestra biblioteca debajo de la de una ficha de Play Store.
  7. Reemplaza los valores necesarios:
    • serviceAccount: Es la dirección de correo electrónico de la cuenta de servicio, por ejemplo. xxxxx@yyyy.iam.gserviceaccount.com
    • key: Es la clave del archivo JSON que se descargó cuando se creó el servicio. Cuenta. Comienza el -----BEGIN PRIVATE KEY... y finaliza el ...END PRIVATE KEY-----\n.

Respuestas de la API

Las APIs pueden mostrar datos en una variedad de formatos. Los más destacados son los XML y JSON.

JSON

Por lo general, es más sencillo trabajar con JSON que en XML como un archivo de respuesta ante incidentes. Sin embargo, aún pueden surgir algunos problemas.

Validación de respuesta

Una vez que se obtiene una respuesta correcta de la llamada a la API, el El siguiente paso es usar JSON.parse para convertir la cadena JSON en una secuencia de comandos de JavaScript. . En este punto, es sensato manejar el caso en el que el proceso errores:

const json = response.getContentText();
try {
  const data = JSON.parse(json);
  return data;
} catch(e) {
  // Parsing of JSON failed - handle error.
}

Además, si la API no está bajo tu control, ten en cuenta que la estructura de la respuesta puede cambiar y es posible que las propiedades ya no existan:

// Less good approach
// Assumes JSON was in form {"queryResponse": ...} when parsed.
const answer = data.queryResponse;

// Better approach
if (data && data.queryResponse) {
  const answer = data.queryResponse;
} else {
  // Format of API response has changed - alert developer or handle accordingly
}

XML

Validación

XML sigue siendo un formato popular para compilar APIs. Una respuesta de una llamada a la API se pueden analizar con el XmlService parse método:

const responseText = response.getContentText();
try {
  const document = XmlService.parse(responseText);
} catch(e) {
  // Error in XML representation - handle accordingly.
}

Mientras que XmlService.parse detecta errores en el XML y arroja excepciones por lo tanto, no permite validar el XML en función de un .

Elemento raíz

Si se analiza correctamente el documento XML, se obtiene el elemento raíz. Con el método getRootElement():

const document = XmlService.parse(responseText);
const rootElement = document.getRootElement();

Espacios de nombres

En el siguiente ejemplo, la API de Spportradar se usa para obtener resultados de fútbol en partidos seleccionados. La respuesta XML toma el siguiente formato:

<schedule xmlns="http://feed.elasticstats.com/schema/soccer/sr/v2/matches-schedule.xsd">
  <matches>
     ...
  </matches>
</schedule>

Observa cómo se especifica el espacio de nombres en el elemento raíz. Por eso, es necesario para:

  • Extrae el atributo de espacio de nombres del documento.
  • Usa este espacio de nombres cuando navegues y accedas a elementos secundarios.

En el siguiente ejemplo, se muestra cómo acceder al elemento <matches> en el ejemplo anterior fragmento de documento:

const document = XmlService.parse(xmlText);
const scheduleElement = document.getRootElement();
// The namespace is required for accessing child elements in the schema.
const namespace = scheduleElement.getNamespace();
const matchesElement = scheduleElement.getChild('matches', namespace);

Obtén valores

Teniendo en cuenta la muestra del cronograma de fútbol:

<match status="..." category="..." ... >
  ...
</match>

Se pueden recuperar los atributos, por ejemplo:

const status = matchElement.getAttribute('status').getValue();

El texto contenido en un elemento se puede leer con getText(), pero estos elementos donde haya varios campos secundarios de texto de un elemento. Reflexiona usando getChildren() e iterando sobre cada elemento secundario en los casos en que varios texto “que los niños” son probables.

Ejemplo de Sportradar

Este Sportradar completo ejemplo ilustra recuperar detalles de partidos de fútbol, específicamente la Premier League inglesa coincidencias. La API de fútbol es uno de la amplia variedad de feeds de deportes que ofrece Sportradar.

Cómo configurar una cuenta de Sportradar
  1. Navega al sitio para desarrolladores de Sportradar.
  2. Regístrate para obtener una cuenta de prueba.
  3. Una vez que te hayas registrado, accede a tu cuenta.
  4. Cuando hayas accedido, navega a MyAccount.

Sportradar separa los distintos deportes en diferentes APIs. Por ejemplo, podría comprar acceso a la API de Soccer, pero no a la API de Tennis. Cada La aplicación que crees puede estar asociada con diferentes deportes. claves diferentes.

  1. En Aplicaciones, haz clic en Crear una nueva aplicación. Proporciona la aplicación un nombre y una descripción e ignora el campo del sitio web.
  2. Selecciona solo la opción Emitir una clave nueva para Soccer Testing Europe v2.
  3. Haz clic en Registrar aplicación.

Una vez que se complete el proceso, debería aparecer una página con tu nueva clave de API.

  1. Pega la secuencia de comandos de muestra. en una nueva secuencia de comandos en Google Ads.
  2. Reemplaza la clave de API en la ficha por la clave que obtuviste anteriormente y edita la de dirección de correo electrónico.

Soluciona problemas

Cuando se trabaja con APIs de terceros, los errores pueden ocurrir por varias razones, por ejemplo, ejemplo:

  • Clientes que envían solicitudes al servidor en un formato no esperado por la API.
  • Clientes que esperan un formato de respuesta diferente al que se encontró.
  • Clientes que usan tokens o claves no válidos, o valores que se dejan como marcadores de posición.
  • Los clientes alcanzan los límites de uso.
  • Los clientes que proporcionan parámetros no válidos.

En todos estos casos y otros, un buen primer paso para identificar la causa del problema es examinar los detalles de la respuesta que causa el error.

Analizar respuestas

De forma predeterminada, cualquier respuesta que devuelva un error (un estado código de 400 o más) que arroja el motor de secuencias de comandos de Google Ads.

Para evitar este comportamiento y permitir que el error y el mensaje de error se inspeccionado, establece la propiedad muteHttpExceptions de los parámetros opcionales en UrlFetchApp.fetch Por ejemplo:

const params = {
  muteHttpExceptions: true
};
const response = UrlFetchApp.fetch(url, params);
if (response.getResponseCode() >= 400) {
  // ... inspect error details...
}

Códigos de estado comunes

  • 200 OK indica que la operación se realizó correctamente. Si la respuesta no contiene los cambios datos, ten en cuenta lo siguiente:

    • Algunas APIs permiten especificar los campos o el formato de la respuesta usar. Consulta la documentación de la API para obtener más detalles sobre esto.
    • Una API puede tener varios recursos a los que se puede llamar. Consulta el documentación para determinar si un recurso diferente puede ser más sea apropiado y te mostrará los datos que necesitas.
    • Es posible que la API haya cambiado desde que se escribió el código. Consulta el documentación o al desarrollador para aclarar dudas.
  • 400 Bad Request suele significar que algo no es correcto en la formato o estructura de la solicitud enviada al servidor. Inspeccione el solicitud y compararla con las especificaciones de la API para garantizar que se ajusta a con sus expectativas. Consulta Cómo inspeccionar solicitudes para obtener más información cómo examinar las solicitudes.

  • 401 Unauthorized generalmente significa que se llama a la API sin proporcionar ni la autorización se realizó correctamente.

    • Si la API usa autorización básica, asegúrate de que el encabezado Authorization se construye y se suministra en la solicitud.
    • Si la API usa OAuth 2.0, asegúrate de que se obtuvo el token de acceso. y se proporciona como un token del portador.
    • Para cualquier otra variación de la autorización, asegúrate de que se para la solicitud.
  • 403 Forbidden indica que el usuario no tiene permiso para el recurso. que se solicitan.

    • Asegúrate de que el usuario tenga los permisos necesarios, por ejemplo, lo que otorga al usuario acceso a un archivo en una solicitud basada en archivos.
  • 404 Not Found significa que el recurso solicitado no existe.

    • Comprueba que la URL que se usó para el extremo de la API sea correcta.
    • Si recuperas un recurso, verifica que el recurso al que se hace referencia exista. (por ejemplo, si el archivo existe para una API basada en archivos).

Solicitudes de inspección

Inspeccionar las solicitudes es útil cuando las respuestas de la API indican que la solicitud está mal formado, por ejemplo, un código de estado 400. Para examinar las solicitudes, UrlFetchApp tiene un método complementario al método fetch(), llamado getRequest()

En lugar de enviar una solicitud al servidor, este método construye la solicitud que podrían haberse enviado y, luego, lo devuelve. Esto permite que el usuario inspeccionar elementos de la solicitud para garantizar que esta se vea correcta.

Por ejemplo, si los datos del formulario en tu solicitud constan de muchas cadenas concatenadas juntos, el error puede recaer en la función que creaste para generar ese formulario de datos no estructurados. En su forma más sencilla:

const request = UrlFetchApp.getRequest(url, params);
console.log(request);
// Now make the fetch:
const response = UrlFetchApp.fetch(url, params);
// ...

te permitirá inspeccionar los elementos de la solicitud.

Registra solicitudes y respuestas

Para asistir en todo el proceso de inspección de las solicitudes y respuestas a un API de terceros, la siguiente función auxiliar puede usarse como una por UrlFetchApp.fetch(), para registrar solicitudes y respuestas.

  1. Reemplaza todas las instancias de UrlFetchApp.fetch() en tu código por logUrlFetch()

  2. Agrega la siguiente función al final de la secuencia de comandos.

    function logUrlFetch(url, opt_params) {
      const params = opt_params || {};
      params.muteHttpExceptions = true;
      const request = UrlFetchApp.getRequest(url, params);
      console.log('Request:       >>> ' + JSON.stringify(request));
      const response = UrlFetchApp.fetch(url, params);
      console.log('Response Code: <<< ' + response.getResponseCode());
      console.log('Response text: <<< ' + response.getContentText());
      if (response.getResponseCode() >= 400) {
        throw Error('Error in response: ' + response);
      }
      return response;
    }
    

Cuando ejecutas tu secuencia de comandos, los detalles de todas las solicitudes y respuestas se registran en la consola, lo que facilita la depuración.