in ,

Registrar Conversaciones de Telegram en una Hoja de Calculo de Google con Apps Script

Registrar Conversaciones de Telegram en una Hoja de Calculo de Google con Apps Script

Hasta ahora, hemos troceado muchos snippets en pequeñas partes con el fin de simplificar el proceso de aprendizaje. Pero como era de esperar, empieza el momento de combinar cosas.

Hoy vamos a compartir un snippet para anotar automáticamente mensajes recibidos por un bot de Telegram en una Hoja de Cálculo de Google usando Google Apps Script. En caso de que gestiones algún tipo de grupo y/o canal de telegram, este snippet será una herramienta de muy alta utilidad, puesto que podrás registrar todos los mensajes de texto que van pasando por tu grupo, en tiempo real, de forma que nada de lo escrito se pierda.

Imagino que algunos nos preguntaréis: ¿Y qué pasa con los archivos (imágenes, audio…)? En una de las próximas entregas trataremos este tema y compartiremos un snippet con el que podréis subir archivos a Google Drive a través de un bot de Telegram. ¡Promesa!

¡Vamos pues al lío! Aquí está el snippet:

var bottoken = '##ESCRIBE AQUI EL TOQUEN DEL BOT##';  var webappurl = '##ESCRIBE AQUI LA URL DE LA WEBAPP##';  var spreadsheeturl = '##URL DE LA HOJA DE CALCULO##'; var sheetname = '##NOMBRE DE LA HOJA DENTRO DE LA HOJA DE CÁLCULO##'; var columnafrom = '##LETRA DE LA COLUMNA EN LA QUE DESEAS QUE SE ANOTE QUIÉN ENVIA EL MENSAJE##'; var columnamessage = '##LETRA DE LA COLUMNA EN LA QUE DESEAS QUE SE ANOTE EL MENSAJE##'; var columnadate = '##LETRA DE LA COLUMNA EN LA QUE DESEAS QUE SE ANOTE LA FECHA DEL MENSAJE##';   var fecha = new Date();  var columnas = {'A': 0,                 'B': 1,                 'C': 2,                 'D': 3,                 'E': 4,                 'F': 5,                 'G': 6,                 'H': 7,                 'I': 8,                 'J': 9,                 'K': 10,                 'L': 11,                 'M': 12,                 'N': 13,                 'O': 14,                 'P': 15,                 'Q': 16,                 'R': 17,                 'S': 18,                 'T': 19,                 'U': 20,                 'V': 21,                 'W': 22,                 'X': 23,                 'Y': 24,                 'Z': 25,                 'a': 0,                 'b': 1,                 'c': 2,                 'd': 3,                 'e': 4,                 'f': 5,                 'g': 6,                 'h': 7,                 'i': 8,                 'j': 9,                 'k': 10,                 'l': 11,                 'm': 12,                 'n': 13,                 'o': 14,                 'p': 15,                 'q': 16,                 'r': 17,                 's': 18,                 't': 19,                 'u': 20,                 'v': 21,                 'w': 22,                 'x': 23,                 'y': 24,                 'z': 25                };   var ss = SpreadsheetApp.openByUrl(spreadsheeturl); var sh = ss.getSheetByName(sheetname);  var columnafromnumber = columnas[columnafrom]; var columnamessagenumber = columnas[columnamessage]; var columnadatenumber = columnas[columnadate];  var telegramurl = 'https://api.telegram.org/bot' + bottoken;  function telegramurls(){   Logger.log('URL información telegram: ' + telegramurl + '/getUpdates'); }  function setWebhook() {   var url = telegramurl + '/setWebhook?url=' + webappurl;   var response = UrlFetchApp.fetch(url);   Logger.log(response.getContentText()); }  function disableWebhook() {   var url = telegramurl + '/setWebhook?url=';   var response = UrlFetchApp.fetch(url);   Logger.log(response.getContentText()); }  function doPost(e){   var data = JSON.parse(e.postData.contents);;      var from = data.message.from['first_name'] + ' ' + data.message.from['last_name'];   var message = data.message.text;      var therow = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''];    therow[columnafromnumber] = from;   therow[columnamessagenumber] = message;   therow[columnadatenumber] = fecha;        sh.appendRow(therow); }

Antes de comenzar y como siempre, recomendamos la lectura de Envío de Mensajes Automáticos a Telegram Mediante Google Apps Script ya que ahí encontraréis cómo hacer algunas de las cosas básicas que obviaremos en este artículo como la creación de un bot a través de @BotFather.

El punto de inicio que vamos a tomar es que ya tenemos creado e iniciado el bot, así que anotamos en el mismo el token de nuestro bot.

Tras esto, sustituimos los parámetros de la hoja de cálculo que vayamos a usar para anotar los mensajes de telegram de forma similar a como hicimos en Anota Emails de Gmail en una Hoja de Cálculo mediante Google Apps. Anotamos la url de nuestra hoja de cálculo, el nombre de la hoja en la que deseamos que escriban los mensajes e incluimos las letras de las columnas en las que deseamos que se anote cada cosa. En este caso, hemos elegido registrar: la fecha completa de envío del mensaje, el contenido del mensaje y quien lo envió.

¿Cómo Publicamos una Aplicación Web?

Una vez realizado lo anterior, queda el paso final. Guardamos el proyecto, y vamos a la pestaña publicar → Implementar como aplicación web. Se nos abrirá la siguiente ventana:

Registrar Conversaciones de Telegram en una Hoja de Calculo de Google con Apps Script: Implementar como aplicación Web

Es imprescindible marcar en quien tiene acceso a la aplicación (Who has access to the app), que cualquiera, incluso de forma anónima (Anyone, even anonymous). Aceptamos (Botón Implementar/Deploy), y la ventana se nos cambiará por la siguiente, de la cual debemos coger la url que nos da y modificar en nuestro snippet la parte correspondiente a webappurl. Esta url es la que hay que poner ahí.

Registrar Conversaciones de Telegram en una Hoja de Calculo de Google con Apps Script: Implementar como aplicación Web

Una vez hecho esto, guardamos y volvemos a realizar el mismo procedimiento aunque en este caso la ventana será un poco diferente puesto que ya teníamos la webapp creada. Lo que debemos hacer es marcar que se trata de una nueva versión y pulsar el botón actualizar.

Registrar Conversaciones de Telegram en una Hoja de Calculo de Google con Apps Script: Implementar como aplicación Web

Una vez hecho esto, ya podemos escribirle a nuestro bot de Telegram y anotará en la Hoja de Cálculo todo lo que le digamos.

¿Pero y cuál es la utilidad de esto, si solo registra lo que le escribimos directamente al bot?

Pues ahora vamos a indicar cómo preparar el bot para que recoja también los mensajes de cualquier grupo en el que se encuentre incluido. Para ello, lo primero que debemos hacer es volver a @BotFather, y una vez en él escribir el parámetro /setprivacy

Registrar Conversaciones de Telegram en una Hoja de Calculo de Google con Apps Script: Bot de Telegram

Seguimos la conversación con @BotFather, eligiendo el bot que queremos que pueda leer los mensajes (el bot del cual hemos usado el token para rellenar el snippet), y le decimos que le deshabilite la seguridad, pulsando en disable.

Una vez hecho esto, ¡ya podemos incluir nuestro bot en cualquier grupo y anotará en la Hoja de Cálculo todo mensaje que pase por el grupo!

¿Qué opinas?

Escrito por Antonio David Cruz

Guardar Archivos Adjuntos de tus Emails de forma automática en Google Drive

Guardar Archivos Adjuntos de tus Emails de forma automática en Google Drive

Introducción al Manejo de Tasker