Hace ya un buen tiempo, escribí una entrada sobre como podías programar una macro para enviar mensajes desde Whatsapp Web usando Excel. Esta no requiere un API de inicio, ya que utiliza los comandos KEY para trabajar.
Si quieres ver la entrada anterior, puedes hacer click aquí.
Hoy, vamos a ver una segunda forma de hacerlo, pero en esta ocasión utilizando la aplicación de escritorio y los links dinámicos.
Descarga el libro de trabajo desde el siguiente enlace.
La teoría del link.
Al parecer Whatsapp puede enviar mensajes dinámicos usando un link construido de la siguiente forma:
https://wa.me/telefono?text=texto+espacios+asi
Su origen lo desconozco, pero parece ser que era para algunas aplicaciones sencillas. Este link se abre en el explorador de la PC y ejecuta un comando para iniciar Whatsapp de escritorio. El texto que viene entre los símbolos es el texto por utilizar y el numero viene inmerso de igual forma.
Tomando esto como ejemplo, necesitamos tener tres programas instalados en la computadora.
- Excel (ooobvio)
- Chrome (es el más estable que encontré)
- Whatsapp desktop (que puedes descargar aquí)
Ahora, vamos al libro de trabajo.
La tabla por utilizar en Excel.
En Excel la construcción es bastante simple, solo crearemos 3 columnas en nuestra hoja con los siguientes datos.
Las dos primeras columnas son datos que deberemos capturar, mientras que el tercero es una función concatenado + sustituir como sigue:
="https://wa.me/"&[@Numero]&"?text="&SUBSTITUTE([@Mensaje]," ","+")
Con estos datos, pasaremos a crear nuestra macro para enviar los mensajes.
Macro para enviar Whatsapp.
El código utilizar la función Shell para llamar al explorador, pasarle como URL el valor de la columna URL y correr un loop para cada fila.
Sub wapp_links() 'Declaracion de variables Dim text, contact As String ' Variables de envio Dim i As Long, pausa As Long 'Variable de itinerancia Dim ws As Worksheet ' Variable de hoja de calculo Dim wapp As Variant ' Variable de Applicacion Dim rng As Range Set ws = Sheets("WAPP URL") Set rng = ws.Range("A6") pausa = ws.Range("B3").Value * 1000 If Application.WorksheetFunction.CountA(ws.Range("A6:A1000000")) = 0 Then MsgBox "No hay URLS para seleccionar", vbOKOnly Exit Sub End If 'Abre Chrome para ejecutar los URL Do Until rng.Offset(i, 0) = "" text = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe -url " & rng.Offset(i, 0) 'Cambiar esta linea si es necesario para encontrar Chrome Shell (text) Espera (pausa) Call SendKeys("~", True) 'Envia el mensaje i = i + 1 Loop Shell "taskkill /IM chrome.exe /F" MsgBox "Mensajes Enviados!" & vbNewLine & vbNewLine & "Revisa tu whatsapp para comprobar los resultados", vbOKOnly, "Fin del procedimiento" Set ws = Nothing End Sub
Adicional, añadiremos la función ESPERA a la macro para darle tiempo suficiente de correr los links.
Function Espera(ByVal tiempo As Double) ' Espera en milisegundos Application.Wait (Now() + tiempo / 24 / 60 / 60 / 1000) End Function
Cabe destacar que no pude evitar el uso de los KEY del teclado, pero al menos esta vez ya son menos indispensables.
Como puedes ver, la macro creara la ventana de Chrome con el link, lo que nos abrirá el Whatsapp de escritorio y presionara ENTER para enviar el mensaje.
Una mejora importante que se podría crear seria utilizar algunos tags dentro de los textos para cambiar por algunas columnas adicionales, como el nombre del usuario y algún dato variable según dependa la situación.
Esta es otra manera de poder enviar mensajes sin tener que pagar el API de Whatsapp, en realidad no es muy sofisticado, pero cuando se trata de pagar en dólares, siempre podemos hacer pruebas antes de contratar el servicio oficial.
Cualquier duda nos leemos abajo.