Utilice datos externos en sus campañas de AdWords con secuencias de comandos para llamar a las API

¿Listo para ponerte el sombrero de científico loco? El columnista Russell Savage ofrece un tutorial sobre cómo crear contenedores para llamadas de API externas, en este caso, la API de Huffpost Pollster.

científico-loco-de-datos-ss-1920

La carrera de las primarias presidenciales de 2016 está en pleno apogeo aquí en los Estados Unidos. Realmente no puede ir a ningún lado sin escuchar los últimos resultados de las encuestas. Si bien estas encuestas ciertamente tienen su defectos, se utilizan ampliamente para hacer predicciones sobre casi todo lo relacionado con las elecciones o las políticas públicas.

Con las secuencias de comandos de AdWords, hay cosas que debería hacer y hay cosas que tu pueden hacer. No estoy seguro de en qué parte del espectro cae el tema de esta publicación, pero pongámonos nuestros sombreros de científico loco y creemos una manera de aprovechar los datos de las encuestas políticas en nuestras campañas de AdWords.

Es posible que nunca desee hacer algo como esto, pero a lo largo del camino, analizaremos algunas técnicas más genéricas y las trampas de crear envoltorios para llamadas de API externas. (No se preocupe si estos términos no le son familiares; lo explicaré más adelante). Esto mantendrá nuestro código limpio, sin mencionar que será fácil de compartir y reutilizar. Por lo tanto, incluso si nunca planea utilizar datos políticos en sus campañas, podrá aplicar estas técnicas a una API de datos externos que sea importante para su negocio.

La API que vamos a utilizar para encontrar estos datos es la API de Huffpost Pollster. Este conjunto de servicios web gratuitos nos proporcionará los últimos datos de encuestas políticas para que podamos incorporarlos en nuestros scripts.

Aprendiendo sobre los candidatos

Una de las principales ventajas de los scripts de AdWords es la capacidad de realizar llamadas a fuentes de datos externas (o URL) mediante URLFetchApp. En el pasado, utilicé esta función para incorporar datos de la API WeatherUnderground, API de Salesforce, API de Twilioy muchos otros en mis guiones.

Cada una de estas fuentes proporciona una API (interfaz de programa de aplicación) en forma de un conjunto de URL a las que podemos llamar para solicitar datos o realizar acciones. A veces, estas URL se denominan puntos finales.

Cuando visita Google o Amazon, realiza una solicitud a esas URL (google.com y amazon.com), y devuelven la página para que la muestre su navegador. En el caso de estas API, estamos haciendo exactamente lo mismo, pero los datos se devuelven en un formato con el que nuestro código de secuencias de comandos de AdWords puede funcionar fácilmente.

Ahí es donde entra en juego un API Wrapper. Un contenedor es simplemente un fragmento de código reutilizable que escribe para facilitar la interacción con una API para usted y los demás. Una buena forma de pensar en esto es imaginarse entregando su código contenedor a otra persona para que lo use. ¿Cuántas preguntas deberían hacerte para empezar? ¿Cuánto código necesitarían escribir para usar su contenedor? Una buena envoltura debería necesitar muy poca explicación.

Está bien si esto todavía es un poco turbio en este momento. Se volverá un poco más concreto a medida que escribamos el código.

Los primeros 100 días

Es bastante raro que empiece con la intención de crear un contenedor de API. La mayoría de las veces comienzo con un conjunto de funciones separadas, todas relacionadas con la misma API, que luego refactorizo ​​en un contenedor.

La API de Pollster es bastante sencilla, ya que en realidad solo contiene un punto final y tres métodos (los métodos Charts, Chart y Polls). Comencemos haciendo una llamada al método Charts. La primera función en interactuar con el método Charts probablemente sería una función como esta:

Primero, creamos una URL de solicitud (al igual que las URL de su navegador) en función de los parámetros que acepta el método. Luego, hacemos una solicitud a esa URL usando URLFetchApp.fetch () y devolvemos la respuesta analizada que envían.

A pesar de la falta de verificación de errores, esta función hace el trabajo para el método de gráficos. Pasemos al método Chart. Los pasos son notablemente similares: cree la URL de solicitud a partir de los parámetros, realice la solicitud a la URL, luego analice y devuelva los resultados. Es tan similar que un buen lugar para comenzar sería copiar el primer método y hacer algunas actualizaciones, que es exactamente lo que es esto:

Ahora tenemos dos funciones con lógica similar accediendo a la misma API. Probablemente sea una buena idea en este punto comenzar a pensar en crear un contenedor.

Uniendo la fiesta

En JavaScript, una forma de agrupar el código y las propiedades relacionados es crear un Objeto. Este no es un curso de programación, por lo que no entraré en detalles sobre el diseño basado en objetos. Todo lo que realmente necesita saber es que un Objeto en su código debe representar una cosa (y todo lo relacionado con esa cosa). En nuestro caso, la cosa es la API de Pollster, por lo que nuestro Objeto va a contener todo lo relacionado con él.

Como ya tenemos algunas de las funciones que entrarán en nuestro Objeto, todo lo que necesitamos hacer es envolverlas en lo que se conoce como función constructora. Se llama así porque llamaremos a esta función más adelante para «construir» un nuevo objeto API.

Notará que necesitamos cambiar la línea de definición de nuestras dos funciones getChart y getCharts. Eso es porque esas funciones ahora se consideran métodos del objeto HuffpostPollsterAPI que acabamos de crear. Un método es simplemente una función que se asigna a una propiedad de un objeto.

¡¿Constructores, métodos, propiedades ?! Ok, entonces la jerga puede volverse un poco confusa, pero no necesitamos enfocarnos en eso. Lo importante es que toda la lógica para interactuar con la API está «envuelta» dentro de nuestro nuevo Objeto. Cualquier código en nuestra función principal puede simplemente crear una nueva instancia del Objeto HuffpostPollsterAPI y luego llamar a las funciones getCharts y getChart. No es necesario comprender todos los detalles de la interacción con la API.

Mientras estamos aquí, sigamos adelante y agreguemos el tercer y último método a este objeto para llamar al método Polls de la API. Te daré una pista: los pasos son increíblemente similares a llamar al método Charts.

Ese es un código feo, pero funciona. Recuerde que el propósito principal de este contenedor es simplificar el código de nuestra aplicación principal para que sea realmente fácil llamar a los datos desde esta API. Dado que casi todos los parámetros de los métodos son opcionales, ¿cómo llamaría alguien a la API getPolls con solo un tema? A mí me suena a muchas explicaciones, así que hagámoslo un poco más fácil para ellos.

Recorta esas asignaciones

Una forma de manejar este problema es pasar un objeto de configuración (o algunas veces un objeto de parámetro) al método que contiene los argumentos originales como sus propiedades. Suena confuso, pero probablemente lo hayas visto usado antes sin darte cuenta. Así es como se ve nuestro código después de realizar el cambio:

Debido a que envío objetos de configuración a las funciones getCharts y getPolls, puedo generalizar el procesamiento de esos objetos en una función separada llamada buildQueryString para que mi código sea un poco más limpio.

Espera, ¿por qué volvemos a la sintaxis de definición original para esta nueva función de cadena de consulta? Porque ese código solo me es útil dentro del objeto API. Alguien que usa mi objeto no necesita usarlo o incluso saber que existe. El uso de la sintaxis original hace que esta función sea «privada» en el sentido de que solo está disponible para el código dentro del objeto API. La práctica general para distinguir entre métodos públicos (disponibles fuera del objeto) y funciones privadas es comenzar todas las funciones privadas con un guión bajo.

El código se ve mucho mejor ahora, pero todavía hay algunas cosas que podemos limpiar. Aquí está la versión final de HuffpostPollsterAPI.

Ahora tenemos nuestro contenedor, así que pongámoslo a trabajar.

Multiplicadores de pujas por popularidad

Nuestro nuevo contenedor nos permite encontrar los datos de sondeo actuales para cada candidato tan pronto como estén disponibles en la API de Pollster.

Después de explorar un poco la API, descubrí que había algunas cosas en las que pensar antes de usar estos datos en una campaña. El primero es la fuente de los datos. Las diferentes fuentes tienen diferentes métodos de votación, sesgos y preguntas. Si voy a ejecutar esto durante unos meses, quiero asegurarme de que estoy usando una fuente de datos consistente.

A continuación, quería asegurarme de estar usando los datos más recientes. Las encuestas tardan en ejecutarse, por lo que no son tan frecuentes como otras fuentes de datos. Solo quería los datos más recientes de la fuente que seleccioné.

Por supuesto, este es un ejemplo artificial que solo debe usarse para ilustrar algunas de las funciones. Después de obtener los datos de las encuestas primarias más recientes, el código busca etiquetas de campaña para cada candidato y establece el multiplicador de ofertas para el escritorio en consecuencia.

Conclusión

Si has llegado hasta aquí, ¡felicitaciones! Pudimos construir un API Wrapper completo que ahora se puede reutilizar en múltiples scripts y compartir con quien quieras. Aprendimos cuándo tiene sentido agrupar código en Objetos y cómo refactorizar ese código para que sea más fácil de usar.

Como mencioné al comienzo de esta publicación, estoy bastante seguro de que administrar sus campañas de marketing utilizando datos de encuestas políticas cae en la categoría de científico loco, pero nunca se sabe hasta que lo intenta.


Las opiniones expresadas en este artículo pertenecen al autor invitado y no necesariamente a El Blog informatico. Los autores del personal se enumeran aquí.


Deja un comentario