Zoho, socio de confianza en la transformación digital
Desafío: evitar que Zoho Flow sobrescriba los datos de registros de Creator existentes con valores en blanco durante las actualizaciones parciales.
Solución: Implementar el mapeo de campos condicional con estrategias de actualización selectiva que preserven la integridad de los datos existentes.
Impacto: Mantener la calidad de los datos y al mismo tiempo permitir actualizaciones automatizadas del flujo de trabajo.
Patrón de estructura de flujo:
1. Desencadenador (Webhook/Programación/Envío de formulario) ↓ 2. Obtener datos de origen ↓ 3. Bloque de decisión: Marque el campo 1 ├─ Si no está vacío → Agregar para actualizar el mapa └─ Si está vacío → Saltar ↓ 4. Bloque de decisión: Marque el campo 2 ├─ Si no está vacío → Agregar para actualizar el mapa └─ Si está vacío → Saltar ↓ 5. [Repetir para todos los campos] ↓ 6. Bloque de decisión: comprobar si el mapa de actualización tiene datos ├─ Si es así → Actualizar registro del creador └─ Si no → Registrar "No se necesitan actualizaciones"
Implementación de código optimizado:
// Función de actualización selectiva integral
void updateCreatorRecordSelectively(int recordId, Map sourceData, cadena appName, cadena formName)
{
intentar {
// Inicializar el mapa de actualización solo con valores no vacíos
actualizarMapa = Mapa();
// Definir el mapeo de campos con validación
camposMappings = {
{"source_field": "Nombre_de_la_tarea", "target_field": "Nombre", "required": false},
{"campo_origen": "Estado_de_la_tarea", "campo_destino": "Estado", "obligatorio": falso},
{"campo_origen": "Fecha_de_vencimiento", "campo_destino": "Fecha_de_vencimiento", "obligatorio": falso},
{"source_field": "Prioridad", "target_field": "Prioridad", "required": false}
};
// Procesar cada mapeo de campo condicionalmente
para cada mapeo en fieldMappings {
sourceField = mapping.get("campo_fuente");
targetField = mapping.get("campo_objetivo");
isRequired = mapping.get("requerido");
valorDeOrigen = DatosDeOrigen.get(CampoDeOrigen);
// Comprobación completa de valores vacíos
si(esValorValido(valorOrigen, esObligatorio)) {
updateMap.put(campoObjetivo, valorOrigen);
información "Incluyendo campo: " + targetField + " con valor: " + sourceValue;
} demás {
info "Omitiendo campo: " + targetField + " (valor vacío o inválido)";
}
}
//Sólo procedemos con la actualización si tenemos campos para actualizar
si(updateMap.size() > 0) {
criterios = "ID == " + recordId;
respuesta = zoho.creator.updateRecords(
"tu_cuenta",
nombreDeLaAplicación,
nombreDeFormulario,
criterios,
actualizarMapa,
Mapa(),
"conexión del creador"
);
si(respuesta.get("código") == 3000) {
info "Registro actualizado exitosamente. Campos actualizados: " + updateMap.keys().toString();
devolver {"estado": "éxito", "campos_actualizados": updateMap.keys(), "id_de_registro": recordId};
}
}
} captura (e) {
información "Error en updateCreatorRecordSelectively: " + e.toString();
devolver {"estado": "error", "mensaje": e.toString()};
}
} // Función de validación de valores mejorada
boolean isValidValue(cadena valor, boolean isRequired)
{
// Manejar valores nulos
si(valor == nulo) {
¿devolver es obligatorio? falso: falso;
}
// Manejar cadenas vacías
si(valor.toString().trim() == "") {
¿devolver es obligatorio? falso: falso;
}
// Manejar indicadores "vacíos" específicos
si(valor.toString().toLowerCase() == "nulo" ||
valor.toString().toLowerCase() == "indefinido" ||
valor.toString() == "0" && !isRequired) {
devuelve falso;
}
devuelve verdadero;
} Para implementar estas configuraciones avanzadas de flujo, asegúrese de tener acceso a:
Scripts de Deluge | Desarrollo personalizado | Capacitación y consultoría
Creatorscripts@zoho.com | 8444552263
⭐ Orgulloso ganador del premio Zoho Creator's Tech Star en el sector salud ⭐
Con la confianza de empresas de todo el mundo
Este correo electrónico se envió automáticamente con Creator Scripts
© 2025 Creator Scripts - Socio de confianza de Zoho en la transformación digital