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) Habilitar BOT - Whatsapp', 'enviarconversacion'); 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 == "find_conversacion") { respuesta = find_conversacion(JSON.stringify(operacion)); } return ContentService.createTextOutput(respuesta).setMimeType(ContentService.MimeType.JSON); }
function find_conversacion(informacion) {
try { var result, jo = {}; var venta = JSON.parse(informacion); var excel = SpreadsheetApp.getActiveSpreadsheet(); var sheet = excel_qr.getSheetByName("Pedido"); var sheet_qr = excel_qr.getSheetByName("Configuracion"); sheet_qr.getRange(2,9).setValue(informacion); var sheet_producto = excel.getSheetByName("Producto"); var rows_producto = sheet_producto.getRange(2, 1, sheet_producto.getLastRow() - 1, sheet_producto.getLastColumn()).getValues(); var fecha = Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd HH:mm:ss"); var numero = (venta.numero).substring(0, (venta.numero).lastIndexOf("@")); var ultimoevento = ""; var nombre_cliente = ""; var direccion_cliente = ""; var codigo_pedido = Utilities.formatDate(new Date(), "GMT", "ddHHmmss"); //new Date().getTime(); var productos=[]; for (var ill = 0; ill < venta.mensaje.length; ill++) {
if(venta.mensaje[ill].evento=="Datos_Direccion"){ nombre_cliente=venta.mensaje[ill].mensaje; } if(venta.mensaje[ill].evento=="FinSolicitarPedido"){ direccion_cliente=venta.mensaje[ill].mensaje; } if(venta.mensaje[ill].evento=="FinConsultaPedido"){ codigo_pedido=venta.mensaje[ill].mensaje; } if (venta.mensaje[ill].evento == "Producto") { var codigo_producto = venta.mensaje[ill].mensaje; for (var i = 0, l = rows_producto.length; i < l; i++) { if (("" + codigo_producto) == ((i+1) + "")) { productos.push({"codigo":codigo_producto,"descripcion":rows_producto[i][0],"precio":rows_producto[i][1]}); break; } } } if (venta.mensaje[ill].evento == "Continuar Pedido") { productos[productos.length-1].cantidad = venta.mensaje[ill].mensaje; } ultimoevento = venta.mensaje[ill].evento; } var mensaje_detalle="Tu detalle es :\n"; if(ultimoevento == "Mostrar_Detalle_Pedido" || ultimoevento == "FinSolicitarPedido"){ var total=0.0; for (var i = 0; i < productos.length; i++) { mensaje_detalle+="*"+productos[i].descripcion+"* Cant."+ productos[i].cantidad+" x "+"S/"+""+productos[i].precio+"\n"; var subtotal=Number.parseFloat(productos[i].cantidad)*Number.parseFloat(productos[i].precio); total=Number.parseFloat(Number.parseFloat(total)+Number.parseFloat(subtotal)).toFixed(2); } mensaje_detalle+="*Total* :"+"S/"+""+total; } if (ultimoevento == "Mostrar_Detalle_Pedido") { jo.status = '0'; jo.message = mensaje_detalle; jo.conversacion = { "mensaje": "", "evento": "Mostrar_Detalle_Pedido_Informacion", "retornar": "Datos_Nombre" }; } if (ultimoevento == "FinSolicitarPedido") { sheet.appendRow([codigo_pedido,fecha,numero,"Pendiente",mensaje_detalle,nombre_cliente,direccion_cliente]); jo.status = '0'; jo.message = "Su pedido ha sido registrado✅😃 con codigo pedido # *"+codigo_pedido+"*"; jo.conversacion = { "mensaje": "@end@", "evento": "FinSolicitarPedido_informacion", "retornar": "" }; } if(ultimoevento=="FinConsultaPedido"){ var mensaje_consulta="No existe pedido # *"+codigo_pedido+"* ✅😃"; var rows = sheet.getRange(2,1,sheet.getLastRow()-1, sheet.getLastColumn()).getValues(); if(rows){ for(var i = 0, l= rows.length; i<l ; i++){ var dataRow = rows[i]; if((dataRow[0]+"")===""+codigo_pedido){ mensaje_consulta = "El pedido # *"+codigo_pedido+"* ( "+dataRow[3]+" )\n"; mensaje_consulta+= dataRow[4]; break; } } } jo.status = '0'; jo.message = mensaje_consulta; jo.conversacion = { "mensaje": "@end@", "evento": "FinConsultaPedido_informacion", "retornar": "" }; } } catch (e) { jo.status = '-1'; jo.message = e.toString(); }
var result = JSON.stringify(jo); sheet_qr.getRange(9, 5).setValue(result);
return result; }
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(); Browser.msgBox('La acción ha sido realizada , escanear registros luego de 10 segundos', Browser.Buttons.OK); } }
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()); } catch (e) { } }
function enviarconversacion() { var response = "No" var token_session = ""; try { token_session = sheet_qr.getRange(3, 2).getValue(); var response = Browser.msgBox('Seguro que quiere habilitar el BOT con la conversacion , 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") { var dataConversacion = []; var dataProducto = []; if(excel_qr.getSheetByName("Producto")){ var sheet_producto =excel_qr.getSheetByName("Producto"); var rows_producto = sheet_producto.getRange(2,1,sheet_producto.getLastRow()-1, sheet_producto.getLastColumn()).getValues(); for(var i1 = 0, l1= rows_producto.length; i1<l1 ; i1++){ var dataRow = rows_producto[i1]; var record = {}; record['mensaje'] = "*"+(i1+1)+"*."+dataRow[0]+" ( S/"+dataRow[1]+" x Kg.)"; dataProducto.push(record); } } if (excel_qr.getSheetByName("Conversacion")) { var sheet = excel_qr.getSheetByName("Conversacion"); var rows = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()).getValues(); for (var i = 0, l = rows.length; i < l; i++) { var dataRow = rows[i]; var record = {}; record['evento'] = dataRow[0]; record['entrada'] = dataRow[1]; record['salida'] = JSON.parse(dataRow[2]); record['retornar'] = dataRow[3]; dataConversacion.push(record); } }
var payload = { "op": "registermessage", "token_qr": token_session, "conversacion": dataConversacion }; payload.data_1 =dataProducto; 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 habilito el BOT inicie la conversacion ', Browser.Buttons.OK); } else { Browser.msgBox('Error al iniciar : ' + json.message, Browser.Buttons.OK); } } catch (e) { Browser.msgBox('Se habilito el BOT inicie la conversacion ', Browser.Buttons.OK); } } }
|