Guardando la Consulta de RUC en una planilla de Google Drive

Publicado el 8 de septiembre de 2025

Marcos Jara

Este sistema permite verificar automáticamente el estado de múltiples RUCs mediante una API, directamente desde Google Sheets. Los resultados incluyen información como razón social, estado del RUC, y si es facturador electrónico.


Paso 1: Crear la Hoja de Cálculo

Crear nuevo documento

  1. Ve a Google Sheets
  2. Haz clic en “+ Crear”“Hoja de cálculo en blanco”
  3. Asigna un nombre descriptivo como “Verificación RUCs – [Nombre de tu empresa]”

Configurar la estructura inicial

En la fila 1 (encabezados), ingresa las siguientes columnas:

ABCD
RUCNombre EmpresaOtro CampoOtro Campo

⚠️ Importante: La columna “RUC” debe existir obligatoriamente. Las demás columnas son opcionales.

Agregar datos de ejemplo

Completa algunas filas con RUCs para probar el sistema:

ABCD
8000000
8000001
8000002

⚙️ Paso 2: Configurar el Script

Acceder al Editor de Scripts

  1. En tu hoja de cálculo, ve al menú ExtensionesApps Script
  2. Se abrirá una nueva pestaña con el editor de Google Apps Script
  3. Verás un archivo llamado Code.gs con contenido predeterminado

Reemplazar el código

  1. Selecciona todo el contenido del archivo Code.gs y elimínalo
  2. Copia y pega el siguiente código:
 /**
 * Crea un menú personalizado en la hoja de cálculo al abrirla.
 * Este menú facilita la ejecución de la función de verificación de RUCs.
 */
function onOpen() {
  SpreadsheetApp.getUi()
      .createMenu('🔍 Herramientas RUC')
      .addItem('Verificar RUCs', 'verificarEstadoRUC')
      .addToUi();
}

/**
 * Función principal para verificar el estado de los RUCs.
 * Lee los RUCs de una columna, consulta una API y escribe los resultados en otras columnas.
 */
function verificarEstadoRUC() {
  // 1. Configuración: Reemplaza con tus valores
  const URL = "https://XXXXXXX";
  const API_KEY = "XXXXXX-XXXXX-XXX-XXX-XXXX";
  const TENANT_ID = "XXXX";
  
  // Accede a la hoja de cálculo activa
  const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const datos = hoja.getDataRange().getValues();
  const encabezados = datos[0];
  const filas = datos.slice(1);

  // 2. Define los campos que deseas extraer de la respuesta JSON de la API
  const camposDeseados = [
    { nombre: "RUC", jsonKey: null },
    { nombre: "Razon Social", jsonKey: "razon_social" },
    { nombre: "Estado", jsonKey: "estado_mensaje" },
    { nombre: "Estado Codigo", jsonKey: "estado_codigo" },
    { nombre: "Facturador Electronico", jsonKey: "facturador_electronico" }
  ];

  // 3. Mapea las columnas existentes y crea las faltantes
  const mapaColumnas = {};
  let ultimaColumna = encabezados.length;
  const nuevasColumnas = [];

  camposDeseados.forEach(campo => {
    let index = encabezados.findIndex(h => h.toLowerCase() === campo.nombre.toLowerCase());
    if (index === -1) {
      ultimaColumna++;
      nuevasColumnas.push({ nombre: campo.nombre, index: ultimaColumna - 1 });
      mapaColumnas[campo.nombre] = ultimaColumna - 1;
    } else {
      mapaColumnas[campo.nombre] = index;
    }
  });

  if (nuevasColumnas.length > 0) {
    hoja.insertColumns(encabezados.length + 1, nuevasColumnas.length);
    nuevasColumnas.forEach(col => hoja.getRange(1, col.index + 1).setValue(col.nombre));
    SpreadsheetApp.flush();
  }

  const columnaRUCIndex = mapaColumnas["RUC"];
  if (columnaRUCIndex === undefined) {
    SpreadsheetApp.getUi().alert(" Error: No se encontró una columna llamada 'Ruc'. Asegúrate de que existe.");
    return;
  }
  
  const valoresActuales = hoja.getRange(2, 1, filas.length, hoja.getLastColumn()).getValues();
  const resultados = valoresActuales.map(fila => [...fila]);

  // 4. Itera sobre cada fila y consulta la API
  filas.forEach((fila, i) => {
    const ruc = fila[columnaRUCIndex];

    if (ruc && ruc.toString().trim().length > 0) {
      const url = `${URL}/${TENANT_ID}/ruc/${ruc}`;
      const opciones = {
        method: "post",
        headers: { "Authorization": `Bearer api_key_${API_KEY}` },
        muteHttpExceptions: true
      };

      try {
        const respuesta = UrlFetchApp.fetch(url, opciones);
        const codigoRespuesta = respuesta.getResponseCode();

        if (codigoRespuesta >= 200 && codigoRespuesta < 300) {
          const contenido = JSON.parse(respuesta.getContentText());
          
          if (contenido.success && contenido.result) {
            // Verifica si el RUC no existe
            if (contenido.result.respuesta_codigo === "0500") {
              resultados[i][mapaColumnas["Estado"]] = contenido.result.respuesta_mensaje;
              // Opcional: limpiar las otras columnas si se necesita
              camposDeseados.forEach(campo => {
                if (campo.jsonKey && campo.nombre !== "Estado") {
                  resultados[i][mapaColumnas[campo.nombre]] = "";
                }
              });
            } else {
              // Si la respuesta es exitosa y el RUC existe, llena las columnas
              camposDeseados.forEach(campo => {
                if (campo.jsonKey) {
                  const valor = contenido.result[campo.jsonKey];
                  resultados[i][mapaColumnas[campo.nombre]] = valor;
                }
              });
            }
          } else {
            const mensajeError = contenido.result ? contenido.result.respuesta_mensaje : "Error desconocido en la respuesta.";
            resultados[i][mapaColumnas["Estado"]] = ` Error: ${mensajeError}`;
          }
        } else {
          resultados[i][mapaColumnas["Estado"]] = ` Error HTTP ${codigoRespuesta}`;
        }
      } catch (e) {
        resultados[i][mapaColumnas["Estado"]] = ` Excepción: ${e.message}`;
      }
    }
  });

  // 5. Escribe todos los resultados en la hoja de una sola vez
  if (resultados.length > 0) {
    hoja.getRange(2, 1, resultados.length, hoja.getLastColumn()).setValues(resultados);
  }

  SpreadsheetApp.getUi().alert("✅ Proceso completado. Se han verificado los RUCs.");
}

Paso 3: Configurar las Variables de la API

Localizar las variables de configuración

En el código, busca estas líneas al inicio de la función verificarEstadoRUC():

const URL = “TU_URL_AQUI”;

const API_KEY = “TU_API_KEY_AQUI”;

const TENANT_ID = “TU_TENANT_ID_AQUI”;

Reemplazar con tus datos reales

📧 Importante: Los siguientes datos deben ser proporcionados por el proveedor del servicio de API:

URL (Endpoint de la API):

  • Reemplaza “TU_URL_AQUI” con la URL base de la API
  • Ejemplo: “https://api.ejemplo.com/v1”

API_KEY (Clave de API):

  • Reemplaza “TU_API_KEY_AQUI” con tu clave de API única
  • Ejemplo: “abc123-def456-ghi789-jkl012”

TENANT_ID (ID del Inquilino):

  • Reemplaza “TU_TENANT_ID_AQUI” con tu ID de inquilino
  • Ejemplo: “mi_empresa”

Ejemplo de configuración completa:

const URL = “https://api.ejemplo.com/v1”;

const API_KEY = “abc123-def456-ghi789-jkl012”;

const TENANT_ID = “mi_empresa”;


Paso 4: Guardar y Autorizar

Guardar el script

  1. Presiona Ctrl+S (o Cmd+S en Mac) para guardar
  2. Asigna un nombre al proyecto como “Verificador RUC”

Autorizar permisos

  1. Haz clic en el botón “Ejecutar” (▶️) en la barra de herramientas
  2. Google solicitará permisos la primera vez:
    • Haz clic en “Revisar permisos”
    • Selecciona tu cuenta de Google
    • Haz clic en “Avanzado”“Ir a [nombre del proyecto] (no seguro)”
    • Haz clic en “Permitir”

Paso 5: Usar el Sistema

Acceder al menú personalizado

  1. Regresa a tu hoja de cálculo
  2. Recarga la página (F5)
  3. Verás un nuevo menú llamado “🔍 Herramientas RUC” en la barra de menú

Ejecutar la verificación

  1. Asegúrate de tener RUCs en la columna “RUC”
  2. Ve al menú “🔍 Herramientas RUC”“Verificar RUCs”
  3. El sistema procesará automáticamente todos los RUCs y agregará las siguientes columnas:
    • Razon Social
    • Estado
    • Estado Codigo
    • Facturador Electronico

📊 Resultados Esperados

Después de ejecutar la verificación, tu hoja se verá así:

RUCNombre EmpresaRazon SocialEstadoEstado CodigoFacturador Electronico
20123456789Mi Empresa SACEMPRESA EJEMPLO SACACTIVO00SI
20987654321Otra Empresa SRLOTRA EMPRESA SRLSUSPENDIDO01NO

❗ Solución de Problemas

Error: “No se encontró una columna llamada ‘RUC'”

  • Causa: La columna RUC no existe o tiene un nombre diferente
  • Solución: Verifica que exista una columna con el encabezado exacto “RUC”

Error HTTP o de conexión

  • Causa: Problemas con la configuración de API o conectividad
  • Solución: Verifica que URL, API_KEY y TENANT_ID estén correctamente configurados

El menú no aparece

  • Causa: El script no se ejecutó correctamente o falta autorización
  • Solución: Recarga la página y verifica que el script esté guardado y autorizado

📞 Soporte

Si necesitas ayuda adicional:

  1. Verifica que todos los pasos se hayan seguido correctamente
  2. Comprueba que las credenciales de API sean válidas
  3. Contacta al proveedor del servicio para obtener soporte técnico

🔒 Consideraciones de Seguridad

  • No compartas tu API_KEY con terceros
  • Mantén privada tu hoja de cálculo si contiene información sensible

Realiza respaldos regulares de tu hoja de cálculo

Solicita un presupuesto ahora mismo para facturar electronicamente en tu empresa.

Contactanos →