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
- Ve a Google Sheets
- Haz clic en “+ Crear” → “Hoja de cálculo en blanco”
- 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:
| A | B | C | D |
| RUC | Nombre Empresa | Otro Campo | Otro 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:
| A | B | C | D |
| 8000000 | |||
| 8000001 | |||
| 8000002 |
⚙️ Paso 2: Configurar el Script
Acceder al Editor de Scripts
- En tu hoja de cálculo, ve al menú Extensiones → Apps Script
- Se abrirá una nueva pestaña con el editor de Google Apps Script
- Verás un archivo llamado Code.gs con contenido predeterminado
Reemplazar el código
- Selecciona todo el contenido del archivo Code.gs y elimínalo
- 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
- Presiona Ctrl+S (o Cmd+S en Mac) para guardar
- Asigna un nombre al proyecto como “Verificador RUC”
Autorizar permisos
- Haz clic en el botón “Ejecutar” (▶️) en la barra de herramientas
- 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
- Regresa a tu hoja de cálculo
- Recarga la página (F5)
- Verás un nuevo menú llamado “🔍 Herramientas RUC” en la barra de menú
Ejecutar la verificación
- Asegúrate de tener RUCs en la columna “RUC”
- Ve al menú “🔍 Herramientas RUC” → “Verificar RUCs”
- 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í:
| RUC | Nombre Empresa | Razon Social | Estado | Estado Codigo | Facturador Electronico |
| 20123456789 | Mi Empresa SAC | EMPRESA EJEMPLO SAC | ACTIVO | 00 | SI |
| 20987654321 | Otra Empresa SRL | OTRA EMPRESA SRL | SUSPENDIDO | 01 | NO |
❗ 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:
- Verifica que todos los pasos se hayan seguido correctamente
- Comprueba que las credenciales de API sean válidas
- 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




