https://d226lax1qjow5r.cloudfront.net/blog/blogposts/send-an-sms-message-from-an-excel-spreadsheet/sms-excel.png

Enviar un SMS desde una hoja de cálculo Excel

Publicado el February 2, 2023

Tiempo de lectura: 5 minutos

Introducción

Microsoft ofrece una forma de añadir nuevas funcionalidades a las aplicaciones de Office, como Microsoft Excel, para preguntar e interactuar con el usuario de forma específica para las necesidades de su empresa. Puede realizar estas tareas y muchas más utilizando Visual Basic for Applications (VBA). Se trata de un lenguaje de programación sencillo pero potente que puedes utilizar para hacer cosas como pasar tus contactos de Microsoft Outlook a una hoja de cálculo de Microsoft Excel.

En esta entrada del blog, vamos a utilizar VBA en Microsoft Excel para enviar un mensaje SMS. Sólo tiene que introducir el número de teléfono móvil y el texto que desea enviar y pulsar un botón para enviarlo. Podrías modificar el código para añadir funcionalidades adicionales que tu negocio pueda requerir, como la programación. ¡Empecemos!

Crear una cuenta de desarrollador de Vonage

Necesitaremos crear una cuenta de desarrollador de Vonage para enviar mensajes SMS desde Vonage. Una vez que crees una Account, encontrarás tu API Key y API Secret en el Panel de API de Vonage en Configuración de API. Una vez que tengas esos valores, guárdalos en un lugar seguro, ya que los usaremos en breve.

Consulta la documentación de SMS API de Vonage

Antes de empezar a codificar, debemos consultar la documentación de SMS API de Vonage para examinar qué campos espera la API que proporcionemos cuando se la llama. Al visitar la documentación, podemos ver que se admiten varios SDK de programación. Como Excel sólo utiliza VBA, tendremos que llamar al punto final REST que proporciona Vonage.

Después de examinar el fragmento de código REST, podemos ver que hay varios campos obligatorios, como:

  • A from número

  • A to número

  • La dirección text que desea enviar.

  • Un api_key y api_secretque deberías tener del paso anterior.

El siguiente ejemplo cURL muestra el aspecto que tiene cuando se llama.

curl -X "POST" "https://rest.nexmo.com/sms/json" \ -d "from=$VONAGE_BRAND_NAME" \ -d "text=A text message sent using the Vonage SMS API" \ -d "to=$TO_NUMBER" \ -d "api_key=$VONAGE_API_KEY" \ -d "api_secret=$VONAGE_API_SECRET"

Si ejecutas este código con información y credenciales válidas, verás aparecer la siguiente salida en tu terminal:

{
  "messages": [
    {
      "to": "14259999999",
      "message-id": "3c153507-8ade-4bd1-ab6f-12cb6f7f9efe",
      "status": "0",
      "remaining-balance": "39.08381985",
      "message-price": "0.00869000",
      "network": "310260"
    }
  ],
  "message-count": "1"
}

Tenga en cuenta que status devuelve un código de estado 0, lo que significa que se ha enviado correctamente. Si lo has enviado a tu número de teléfono, debería haber aparecido un mensaje de texto. A continuación, vamos a configurar Microsoft Excel.

Configurar nuestra hoja de cálculo Excel

Como ya se ha indicado, Microsoft Excel puede utilizar VBA (Visual Basic for Applications) para interactuar con los datos mediante programación. Empecemos creando una hoja de cálculo con un par de filas de datos que contengan los números a los que queremos enviar los mensajes de texto y el mensaje que queremos enviar.

Empecemos creando una hoja de cálculo con un par de filas de datos que contengan el número al que queremos enviar el mensaje de texto, así como el mensaje que queremos que se envíe.

Estructure su hoja Excel de la siguiente manera:

  • A1 y A2 incluirán los números de móvil.

  • B1 y B2 incluirán el texto que debe enviarse.

  • H1 incluirá el texto "API Key".

  • H2 incluirá el texto "API Secret".

  • I1 es tu clave de API del panel de API de Vonage.

  • I2 es tu secreto de API desde el panel de API de Vonage.

  • I3 será un botón que diga "Enviar SMS" (hablaré de la creación del botón en breve).

  • Dé un nombre a su hoja de cálculo, por ejemplo Numbers.

Ahora deberías tener una pantalla parecida a la siguiente.

Excel with sample dataExcelStart.png

Activación y configuración del modo de desarrollador en Microsoft Excel

Necesitamos añadir una opción para ver el Desarrollador para utilizar VBA. Puede activar esta opción yendo a Archivo -> Opciones -> Personalizar cinta y marcando la opción Desarrollador como se muestra a continuación.

Excel Dev ModeExcelDevMode.png

El Desarrollador debería aparecer en la barra de menús. Selecciónela y, a continuación, la opción Visual Basic para permitir la introducción de código en el sistema.

Visual Basic OptionVisualBasic.png

Aparecerá una nueva ventana con Microsoft Visual Basic for Applications en ejecución. Seleccione Insertar en las opciones del Menú y seleccione Módulo para introducir el código Visual Basic que interactúa con la hoja Excel.

Excel New ModuleNewModule.png

Necesitamos añadir una Referencia al archivo Microsoft XML 6.0 que nos permitirá llamar a un REST Endpoint. Vaya a Herramientas -> Referencia y marque Microsoft XML, v6.0como se muestra a continuación:

Add Reference DialogAddReference.png

Cómo agregar código VBA para llamar a SMS API de Vonage

Copia y pega el siguiente bloque de código en tu aplicación y fíjate en los comentarios que he dejado que describen lo que hace cada sección.

Sub SendSMS()

'Authentication
ApiKey = ActiveSheet.Range("I1").Value
ApiSecret = ActiveSheet.Range("I2").Value

'Define our Worksheet so we can loop through the data for the number and message to send. 
Dim wb As Workbook
Dim ws As Worksheet

Set wb = ThisWorkbook
Set ws = wb.Worksheets("Numbers")

'Loop through Worksheet content - I only had two rows in this example, but you can modify this to your needs. 
For i = 1 To 2
   toNumber = ws.Range("A" & i).Value 'our number to text
   bodyText = ws.Range("B" & i).Value 'the text we wish to send
   
    'Use Microsoft's XML Library to make a web request.
    Set Request = CreateObject("MSXML2.ServerXMLHTTP.6.0")
    
    'Concatenate the required data that Vonage's REST Endpoint is expecting.
    Url = "https://rest.nexmo.com/sms/json?from=18335787204" & "&to=" & toNumber & "&text=" & bodyText & "&api_key=" & ApiKey & "&api_secret=" & ApiSecret
    
    'Open POST Request
    Request.Open "POST", Url, False
    
    'Set the Request Header
    Request.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    
    'Send Request
    Request.send Url
Next i

'OPTIONAL: You can get the response text after a message is sent by calling MsgBox Request.responseText
End Sub

Por último, tenemos que añadir un Botón para activar este evento. Seleccione Insertar en el Menú ProgramadorHaga clic en Botóny colóquelo en I3.

Select VBA ButtonExcelButton.png

Una vez que suelte el ratón, se le pedirá que Asignar macro a ese Botón. Seleccione el botón SendSMS que acabamos de pegar, como se muestra a continuación, y pulse OK.

Assign Macro to WorksheetAssignMacro.png

¡Es hora de probarlo! Asegúrese de que tiene un número de teléfono válido para su ubicación en A1 y A2 y texto en B1 y B2, y pulse el botón EnviarSMS .

Excel with sample dataExcelStart.png

Si todo ha ido bien, debería haber recibido un texto con la información facilitada en la hoja de cálculo.

Resumen

VBA es muy eficaz y eficiente en cuanto a soluciones para productos relacionados con Microsoft Office, como hemos visto hoy. Mientras investigaba para esta entrada del blog, me enteré de que lleva utilizándose casi treinta años. Esto me hace confiar en que se trata de una plataforma madura; lo más probable es que otros ya se hayan encontrado con los mismos problemas que yo.

Si quieres hacer esto en Google Sheets, debes buscar aquí. Google Sheets y Microsoft Excel comparten muchas similitudes, y usarás la misma gran API de SMS de Vonage que se discute aquí.

Como siempre, si tienes preguntas o comentarios, únete a nosotros en el Slack para desarrolladores de Vonage. Gracias nuevamente por leer, ¡y te espero en la próxima!

Compartir:

https://a.storyblok.com/f/270183/400x400/7cdff37c0e/michael-crump.png
Michael CrumpDirector de Experiencias de los Desarrolladores

Michael Crump trabaja en Vonage en el equipo de experiencias para desarrolladores y es programador, YouTuber y conferenciante habitual sobre diversos temas de desarrollo de .NET, la nube y las comunicaciones. Le apasiona ayudar a los desarrolladores a comprender las ventajas de cada uno de ellos de una forma sencilla.