Artículos sobre: Integraciones

Cómo automatizar la sincronización de contactos desde una planilla de Google Sheets hacia icomm

La integración entre icomm y Google Sheets permite sincronizar automáticamente los contactos desde una planilla de cálculo hacia la plataforma. Esta funcionalidad facilita el proceso de importación de contactos y mantiene actualizada la base de datos de manera eficiente.


Pasos para la configuración:


  1. Configuración inicial:
  • Abre tu planilla de Google Sheets.
  • Haz click en Extensiones en la barra de menú y selecciona Apps Script.



  • Elimina el código predeterminado e introduce el siguiente código.


// 📌 Variable global con el nombre de la hoja
var SHEET_NAME = "Nombre de la hoja";
var API_KEY = ""; //API_KEY de la instancia de icomm (obtener de la plataforma)
var PROFILE_KEY = ""; //ProfileKey del perfil al cuál se agregan los contactos (obtener de la plataforma)

function atEdit(e) {
var sheet = e.source.getActiveSheet();
var range = e.range;

if (sheet.getName() === SHEET_NAME) {
var row = range.getRow();
var numRows = range.getNumRows();

for (var i = row; i < row + numRows; i++) {
processRow(sheet, i);
}
}
}

function syncAllRows() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME);
var numRows = sheet.getLastRow();

for (var i = 2; i <= numRows; i++) { // Asume que la fila 1 tiene encabezados
processRow(sheet, i);
}
}

function processRow(sheet, i) {
var email = sheet.getRange(i, 1).getValue().toString(); // Numero de columna
var nombre = sheet.getRange(i, 2).getValue().toString(); // Numero de columna
var celular = sheet.getRange(i, 3).getValue().toString(); // Numero de columna

// Construir el objeto de datos para enviar a la API
var data = {
"ProfileKey": PROFILE_KEY,
"ContactList": [
{
"Email": email,
"CustomFields": [
{
"Key": "nombre",
"Value": nombre
},
{
"Key": "celular",
"Value": celular
}
]
}
]
};

enviarSolicitudHTTP(data);
}

function enviarSolicitudHTTP(data) {
var url = 'https://api.icommarketing.com/Contacts/SaveMultiContact.Json/';
var headers = {
'accept': 'application/json',
'Authorization': API_KEY, // Asegúrate que esté correcto
'Content-Type': 'application/json'
};

var options = {
'method': 'post',
'headers': headers,
'payload': JSON.stringify(data),
'muteHttpExceptions': true
};

try {

var response = UrlFetchApp.fetch(url, options);
var responseCode = response.getResponseCode();
var responseText = response.getContentText();

Logger.log("Código de respuesta: " + responseCode);
Logger.log("Respuesta del servidor: " + responseText);

if (responseCode === 200) {
try {
var parsedResponse = JSON.parse(responseText);
if (parsedResponse.SaveMultiContactJsonResult.StatusCode === 499) {
Logger.log("⚠️ StatusCode 499 detectado. Logging del request:");
Logger.log("Request data: " + JSON.stringify(data));
}
} catch (parseError) {
Logger.log("Error al parsear JSON de respuesta: " + parseError.message);
}
}

} catch (error) {
Logger.log("Error en la solicitud: " + error.message);
}
}


  1. Configuración de la planilla de Google Sheets:


  • Asegúrate de que tu planilla tenga las columnas necesarias para los datos de contactos (por ejemplo, email, nombre, celular).

  • Nombra las columnas de acuerdo con los campos específicos que deseas sincronizar.

  • Ten en cuenta la posición de cada columna, ya que esta se indicará en el script (por ejemplo, la columna A representa la columna 1).



  1. Configuración del script y la API de icomm:


  • En la sección var SHEET_NAME = "Nombre de la hoja", reemplaza "Nombre de la hoja" con el nombre de tu planilla de Google Sheets.


  • En la sección var API_KEY = "", introduce el API_KEY que hayas obtenido de la plataforma.


  • En la sección var PROFILE_KEY = "", introduce el PROFILE_KEY que hayas obtenido de la plataforma.

  • En la sección var email = sheet.getRange(i, 1).getValue(), indica el número de columna correspondiente para cada campo (por ejemplo, 1 para email).

  • En la sección "CustomFields", coloca los mismos campos que en tu planilla y en el perfil de icomm. Es importante destacar que, al agregar campos después del Key y del Value, deben agregarse "," (comas) para delimitar los mismos. Por ejemplo: "Key": "nombre", "Value": "nombre".


Recuerda que si quieres enviar una fecha convertida al formato DD/MM/YYYY para ser utilizada en las segmentaciones de icomm, debes primero convertirla antes de enviarla en los CustomFields. Para ello puedes utilizar el siguiente ejemplo, considerando "fecha" como el nombre de la variable previamente capturada
Utilities.formatDate(fecha, Session.getScriptTimeZone(), "dd/MM/yyyy")




Accede a nuestro artículo sobre Cómo obtener el Profile Key de un perfil regular.




Accede a nuestro artículo sobre Cómo ver el Dominio y ApiKey en icomm.

  • Reemplaza el valor de 'Authorization' con tu API Key proporcionada por icomm.


  • Guarda el script en el ícono de disquete.


  1. Ejecución del script:


  • Crea una BBDD en icomm con los mismos campos que tu planilla de Google Sheets.

  • Edita tu planilla de cálculo como lo haces normalmente. El script se ejecutará automáticamente cuando se realicen ediciones en la planilla, enviando los datos a la plataforma de icomm.


  • ¿La planilla ya tiene datos cargados?

Si tu planilla ya contiene contactos que necesitas sincronizar antes de empezar a trabajar con ediciones nuevas:

  1. Dentro de Apps Script, en el menú desplegable de funciones (arriba a la izquierda), seleccioná syncAllRows.
  2. Presiona el botón Run para ejecutar el script manualmente.

.

  1. Puedes verificar si los contactos se enviaron correctamente revisando el perfil en icomm o consultando la sección "Ejecuciones" dentro de Apps Script (ver el punto 1 de la sección FAQ).



  1. Activadores (Triggers):

  • En la barra de menú, selecciona la pestaña "Triggers" y luego "Add Trigger".


  • En el popup, configura las opciones: "atEdit", "Head", "From spreadsheet", "On edit" y selecciona la preferencia para recibir notificaciones cuando se edite la planilla.


  • Guarda los cambios.
  • Una vez guardado el disparador o Trigger, debemos regresar a la parte de edición y seleccionar la opción de "EnviarSolicitudHTTP".

  • Una vez realizado este paso, podrás cargar contactos en la planilla de Google Sheets y los mismos se verán reflejados en la BBDD creada en icomm.


Notas importantes:


  • Este script permite la carga masiva de información.
  • Funciona para planillas de cálculo conectadas a un formulario de Google.
  • Se puede cambiar el nombre de los encabezados sin modificar el script.
  • No se puede cambiar la posición de los campos en la planilla, ya que el script reconoce su ubicación.
  • Si deseas dejar únicamente el campo Email, debes borrar el resto de campos del script al igual que el Key & Value.



FAQ


1) Mis contactos no se están sincronizando. ¿ Cómo puedo visualizar si existe algún error ?


En caso de que los contactos no se estén sincronizando con el perfil, podemos ir dentro de Apps Script a la sección "Ejecuciones" .



Una vez allí, seleccionamos alguna de las ejecuciones recientes para visualizar si existe algún mensaje de error.



Entre los errores más frecuentes podemos encontrar:


a) API KEY incorrecto


b) ProfileKey incorrecto


c) Alguno de los campos enviados no fue registrado dentro de la base de datos vinculada.


d) La estructura de la petición es incorrecta. En este caso, verificar que tanto el atributo "Email" como todos los "Key"/"Value" comiencen con mayúscula.

Actualizado el: 06/08/2025

¿Este artículo te resultó útil?

Comparte tu opinión

Cancelar

¡Gracias!