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