Envía automáticamente mensajes de WhatsApp por cada nueva fila en Google Sheets

Aprenda a enviar automáticamente un mensaje de WhatsApp por cada nueva fila añadida, utilizando 2Chat y webhooks.

Envía automáticamente mensajes de WhatsApp por cada nueva fila en Google Sheets

Google Sheets es una herramienta versátil y puede ser utilizada eficazmente como un sencillo gestor de contactos. Estos son los beneficios de usar Google Sheets para este propósito:

  • Colaboración: Varios miembros del equipo pueden ver y editar la hoja de contactos en tiempo real. Esta función de colaboración garantiza que todos tengan la información de contacto más actualizada.
  • Personalización: A diferencia del software de gestión de contactos con formato fijo, Google Sheets te permite diseñar tus columnas, filas y disposición según tus necesidades específicas.
  • Ordenamiento y Filtrado Fácil: Con funciones integradas, puedes ordenar contactos alfabéticamente, por fecha añadida o por cualquier otro criterio. Los filtros te permiten ver grupos o categorías específicas.
  • Económico: Para pequeños negocios o uso personal, Google Sheets es una herramienta gratuita. Incluso para funciones avanzadas en el nivel empresarial, Google Workspace sigue siendo rentable en comparación con soluciones CRM dedicadas.
  • Importación/Exportación de Datos: Google Sheets admite varios formatos, facilitando la importación de listas de contactos de otras plataformas o la exportación de tu lista de contactos para su uso en otra aplicación.
  • Validación de Datos: Puedes configurar reglas de validación de datos para asegurar que la información ingresada (como números de teléfono o formatos de correo electrónico) cumpla con criterios específicos, garantizando consistencia.
  • Formato Condicional: Con esta función, por ejemplo, puedes resaltar contactos que no han sido contactados en mucho tiempo o codificar por colores los contactos según su importancia o categoría.
  • Automatización y Programación: Usando Google Apps Script, puedes automatizar ciertas tareas, como enviar correos electrónicos de recordatorio o actualizar contactos basándote en disparadores específicos.

Si bien Google Sheets puede servir bien como un gestor de contactos sencillo, vale la pena señalar que a medida que tus necesidades crezcan y se vuelvan más complejas, un CRM o sistema de gestión de contactos dedicado podría ofrecer funcionalidades más especializadas. Sin embargo, para requisitos sencillos, Google Sheets es un excelente punto de partida.

Usando Google Apps Script y 2Chat puedes crear fácilmente una rutina que envíe automáticamente un mensaje de WhatsApp a los contactos creados. Utilizaremos la función trigger de Google Sheets para comprobar periódicamente si hay nuevas filas y enviar un mensaje personalizado utilizando un flujo de 2Chat con un webhook. Puedes aprender a crear este tipo de flujos en este enlace.

Creación de la hoja de Google Contactos

Crea una nueva Hoja de Google y en una nueva hoja de trabajo agrega las columnas que requieras, en este caso creamos la hoja "Contacts" con las siguientes columnas.

Debe tener una columna donde insertará el número de teléfono de destino, "whatsapp" y una columna para "status" que el código utilizará para marcar los contactos procesados.

Creando un flujo de 2Chat

Necesitaremos ahora un flujo 2Chat disparado con un webhook para enviar el mensaje personalizado desde Google Sheets. Crea el flujo siguiendo los pasos detallados en este tutorial, y debes asegurarte de tener un componente ""mensaje" usando las columnas de la hoja como variables.

Añadir el script de Google Apps para enviar un mensaje de WhatsApp

Ahora vuelve a tu Google Sheet y abre un Google Apps Script

Copie el siguiente código y péguelo en la ventana de código


//Declare main parameters

//Label from the column of the destination phone number
const WHATSAPPCOLUMN = 'whatsapp'
//Label for the columb where the script will mark the message as processed
const STATUSCOLUMN = 'status' 

//WebHook URL from the 2Chat flow trigger (https://help.2chat.io/en/articles/8359626-how-to-start-a-whatsapp-flow-with-a-webhook)
const WEBHOOK2CHATURL = '[REPLACE YOUR 2CHAT FLOW WEBHOOK]' 


// Funtion that reads the Google Sheet and send the messages for new rows
function send2ChatWebhook_Sheet(){
  //Google Sheet to monitor
  var sheetName = '[REPLACE WITH YOUR CONTACTS WORKSHEET NAME]'

  var oSheet =  SpreadsheetApp.getActive().getSheetByName(sheetName)
  var vRow=1
  var col=1  
  var valCellVariable =oSheet.getRange(1, col).getValue()
  var colStatus=1
  var blnStatus=false
  var blnWhatsApp=false
  // Read column names
  while (valCellVariable!=''){        
    if (valCellVariable==STATUSCOLUMN){      
      colStatus=col
      blnStatus=true
    }else if(valCellVariable==WHATSAPPCOLUMN){
      blnWhatsApp=true
    }
    col++
    valCellVariable =oSheet.getRange(1, col).getValue()          
      
  }

  // The sheet must have a status and WhatsApp phone number columns
  if (blnStatus && blnWhatsApp) {
    var vRow=2    
    var valCellValue =oSheet.getRange(vRow, 1).getValue()
    var valCellStatus =oSheet.getRange(vRow, colStatus).getValue()
    // Read all the Sheets' rows ignoring the "Processed"
    while (valCellValue!=''){    
      if (valCellStatus!="Processed"){
        //When is not processed send the message
        send2ChatWebhookRequest(sheetName,vRow,WHATSAPPCOLUMN,STATUSCOLUMN)
      }      
      vRow++
      valCellValue =oSheet.getRange(vRow, 1).getValue()
      valCellStatus =oSheet.getRange(vRow, colStatus).getValue()
    }  
  }
}


// Function to send WhatsApp Message using 2Chat flows trigger
function send2ChatWebhookRequest(vSheet,vRow,vWhatsAppColumn,vStatusColumn){
  var vWhatsAppLabel = vWhatsAppColumn  
  var JSONrequest = {"to_number": "",
                        "variables": {}
                    }
  var variables=[]
  var oSheet =  SpreadsheetApp.getActive().getSheetByName(vSheet)
  var col=1
  var colStatus = 0
  var valCellVariable =oSheet.getRange(1, col).getValue()
  var valCellValue =oSheet.getRange(vRow, col).getValue()
  
  //Read columns and create JSON request
  while (valCellVariable!=''){        
    if (valCellVariable==vWhatsAppLabel){
      JSONrequest.to_number='+' + valCellValue.toString().replace('+','')
    }else if(valCellVariable==vStatusColumn) {
      colStatus=col
    }else{
      JSONrequest.variables[valCellVariable]=valCellValue
    }
    col++
    valCellVariable =oSheet.getRange(1, col).getValue()
    valCellValue =oSheet.getRange(vRow, col).getValue()
  }

  //Create request
  var data = JSON.stringify(JSONrequest)
  var options = {    
    'method' : 'post',
    'headers':{
      'Content-Type': 'application/json'
    },
    'payload' : data
  };
  

  var Webhook2ChatURL=WEBHOOK2CHATURL
  try{
    //Invoke 2Chat Webhook
    var response =UrlFetchApp.fetch(Webhook2ChatURL, options);
    oSheet.getRange(vRow, colStatus).setValue('Processed')
  }catch(e){
    //Error handling, you could use e.message for full technical information about the error
    oSheet.getRange(vRow, colStatus).setValue(e)
  }

}

Sustituye las partes que faltan en el código por tus propios parámetros

Añade valores de prueba a Google Sheets para validar si el código funciona y además proporciona autorizaciones de código. Recuerda que el flujo 2Chat debe estar publicado

Ahora selecciona en el código send2ChatWebhook_Sheet y haz clic en Run

Después de la primera ejecución debe aceptar la autorización, puede seguir este flujo de trabajo como guía.

Si todo funciona correctamente, verá el texto "Processed" en la columna "Status".

Y recibirás el mensaje personalizado en el número de teléfono de destino:

Programación del disparador controlado por tiempo en Google Sheets

Ahora que ya podemos enviar mensajes de WhatsApp desde Google Sheets, utilizaremos un trigger controlado por tiempo para enviar automáticamente mensajes por cada nueva fila. Para ello debes entrar primero en la sección Triggers

Clic en Add Trigger

Primero selecciona la función send2ChatWebhook_Sheet o la función que desees ejecutar periódicamente; selecciona Time-driven como fuente de eventos y selecciona el tipo de activación y el intervalo.

Pulsa en Save y con esto ahora todos los nuevos contactos recibirán el mensaje de WhatsApp aunque hayas cerrado la hoja.

Crea una nueva cuenta de prueba en 2Chat, activa tu número de teléfono WhatsApp en cuestión de minutos para impulsar tus ventas y procesos de atención al cliente.