A continuación se muestra una solución para Google sheet para enviar mensajes , imágenes , documentos a través de WhatsApp
¿ Que necesitas para implementarlo y cuanto mensajes te permite enviar ?
- Crear la hoja Google sheet como indica el video
- Escanear la hoja para obtener token QR
Video Solución:
Google Sheet
Crear una hoja Sheet en su cuenta con los mismo "nombres de las Hojas " con las siguientes "columnas y campos" similares a la siguiente hoja
https://docs.google.com/spreadsheets/d/1vOaz_PwWhAorMowwZrtCVhnLqOBMOYVqTBKWGIXltkE/edit?usp=sharing
Método que envía mensajes de forma asíncrona a WhatsApp
Esperar 10 seg a que aparesca el menu Whatsapp , en caso no aparecer verificar que este logueado con tu cuenta de gmail
Codigo AppScript (indica en el video)
var excel_qr = SpreadsheetApp.getActiveSpreadsheet();var sheet_qr = excel_qr.getSheetByName("Configuracion"); var api_interna = "https://script.google.com/macros/s/AKfycbyoBhxuklU5D3LTguTcYAS85klwFINHxxd-FroauC4CmFVvS0ua/exec"; var appscript =sheet_qr.getRange(1,2).getValue(); function onOpen() { createMenus(); } function createMenus() { var menu = SpreadsheetApp.getUi().createMenu("Whatsapp"); menu.addItem('1) Obtener TOKEN Session - QR Whatsapp', 'qrwhatsapp'); menu.addItem('2) Enviar Mensaje Manual - Whatsapp', 'enviarwhatsapp'); menu.addToUi(); } function doPost(e) { var operacion = JSON.parse(e.postData.contents) var respuesta = ""; if (operacion.op == "qr") { respuesta = generar(JSON.stringify(operacion)); } if (operacion.op == "resultado") { respuesta = resultado(JSON.stringify(operacion)); } return ContentService.createTextOutput(respuesta).setMimeType(ContentService.MimeType.JSON); } function grupos(informacion) { try { var resultado = JSON.parse(informacion); var excel = SpreadsheetApp.getActiveSpreadsheet(); var sheet = excel.getSheetByName("Configuracion"); sheet.getRange(4,2).setValue(JSON.stringify(resultado.mensajes)); var result, jo = {}; jo.status = '0'; jo.message = ' Se grabo el registrp'; } catch (e) { jo.status = '-1'; jo.message = e.toString(); } var result = JSON.stringify(jo); return result; } function resultado(informacion) { var jo = {}; try { var resultado = JSON.parse(informacion); var excel = SpreadsheetApp.getActiveSpreadsheet(); var sheet = excel.getSheetByName("MensajeManual"); for (let i = 0; i < resultado.mensajes.length; i++) { sheet.getRange((2 + (parseInt(resultado.mensajes[i].posicion))), 6).setValue(resultado.mensajes[i].estado); } jo.status = '0'; jo.message = ' Se grabo el registrp'; } catch (e) { jo.status = '-1'; jo.message = e.toString(); } return JSON.stringify(jo); } function enviarwhatsapp() { var response = "No" var token_session = ""; try { token_session = sheet_qr.getRange(3, 2).getValue(); var response = Browser.msgBox('Seguro que quiere enviar los mensajes grabados en la hoja MensajeManual ahora , el token de session sera : ' + token_session + ' ?', Browser.Buttons.YES_NO); } catch (e) { Browser.msgBox('La acción no se ha realizado', Browser.Buttons.OK); } if (response == "yes") { if (excel_qr.getSheetByName("MensajeManual")) { var dataArray = []; var excel = SpreadsheetApp.getActiveSpreadsheet(); var sheet = excel.getSheetByName("MensajeManual"); var rows = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()).getValues(); for (var i = 0, l = rows.length; i < l; i++) { var numero = rows[i][0]; var mensaje = rows[i][1]; var imagen = rows[i][2]; var url = rows[i][3]; var boton = rows[i][4]; var arrayNumero = ("" + numero).split(";"); for (var ii = 0; ii < arrayNumero.length; ii++) { if (mensaje) { var record = {}; record['numero'] = arrayNumero[ii]; record['mensaje'] = mensaje; record['posicion'] = ""+i; dataArray.push(record); } if (imagen) { var record = {}; record['numero'] = arrayNumero[ii]; record['imagenbase64'] = imagen; record['posicion'] = ""+i; dataArray.push(record); } if (url) { var record = {}; record['numero'] = arrayNumero[ii]; record['url'] = url; record['posicion'] = ""+i; dataArray.push(record); } if (boton) { var record = {}; record['numero'] = arrayNumero[ii]; record['boton'] = "boton"; record['contenido'] = JSON.parse(boton); record['posicion'] = ""+i; dataArray.push(record); } } } var payload = { "op": "registermessage","token_qr":token_session,"listener":true,"mensajes":dataArray,"app_script": appscript}; var options = { 'headers': { "Content-Type": "application/json" }, 'method': "POST", 'payload': JSON.stringify(payload) }; try { var response = UrlFetchApp.fetch(api_interna, options); var json = JSON.parse(response.getContentText()); if (json.status == "0") { Browser.msgBox('Se notificaron los mensajes', Browser.Buttons.OK); } else { Browser.msgBox('Error al iniciar : ' + json.message, Browser.Buttons.OK); } } catch (e) { Browser.msgBox('Se notificaron los mensajes asincrono ', Browser.Buttons.OK); } } } } function generar(informacion) { try { var qr = JSON.parse(informacion); sheet_qr.getRange(2, 2).setValue(encodeURIComponent(qr.qr)); var result, jo = {}; if (qr.numero && qr.qr=="CONECTADO") { sheet_qr.getRange(3, 2).setValue(qr.session); } jo.status = '0'; jo.message = ' Se grabo el registro'; } catch (e) { jo.status = '-1'; jo.message = e.toString(); } var result = JSON.stringify(jo); return result; } function qrwhatsapp() { var response = "No" try { // sheet_qr.getRange(3, 2).setValue(""); var response = Browser.msgBox('Seguro que quiere generar QR ahora ?', Browser.Buttons.YES_NO); } catch (e) { Browser.msgBox('La acción no se ha realizado', Browser.Buttons.OK); } if (response == "yes") { enviar(); } } function enviar() { var payload = { "op": "iniciarqr","app_script": appscript,"sheet_id":excel_qr.getId(), "fechahora": Utilities.formatDate(new Date(), "GMT-5", "yyMMddHHmmss") }; var options = { 'headers': { "Content-Type": "application/json" }, 'method': "POST", 'payload': JSON.stringify(payload) }; try { var response = UrlFetchApp.fetch(api_interna, options); var json = JSON.parse(response.getContentText()); Browser.msgBox(json.message, Browser.Buttons.OK); } catch (e) { Browser.msgBox(e.toString(), Browser.Buttons.OK); } } |