es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Actualización diaria de Google Web App Script para Celda

Hola, en el siguiente enlace tengo un formulario de usuario donde puedo agregar, editar y eliminar usuarios.

Enlace de hoja de cálculo
https://docs.google.com/spreadsheets/d/1tyz_3WeEkmY4WX8Xvx38nkLow8hcbCjPMLS1-NiPFgo/edit?usp=sharing

Enlace de desarrollo
https://script.google.com/macros/s/AKfycbxIT4fJPNyD5U2CKFzWCSho0tR2uuczq1hevzHawtg/dev

Ahora, todos los campos anteriores como nombre, correo electrónico y fecha de nacimiento se guardarán y podrán ser editados nuevamente.

He agregado 2 columnas más debajo de “Número de teléfono” y “País”:
Actualizaciones diarias y Registros diarios

Ahora, cuando edite un usuario y actualice la actividad del día en Actualizaciones diarias como Algo agregado el - 1-ene-2021,
debe borrar el campo en Actualizaciones diarias y se debe actualizar en el campo Registros diarios.
Si actualizo Algo agregado el 2-ene-2021 en Actualizaciones diarias nuevamente, se debe borrar y aparecer en el campo Registros diarios como anterior y actual.

Algo agregado el - 1-ene-2021

Algo agregado el 2-ene-2021

Mi objetivo es que todos los cambios realizados en el campo de Actualizaciones diarias aparezcan en el campo Registros diarios como de solo lectura, esto no se puede editar.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Objetivo

    El objetivo es mostrar todos los cambios realizados en el campo “Actualizaciones diarias” en la hoja de cálculo del formulario de usuario y hacer que aparezcan en el campo “Registros diarios” como solo lectura.

    Métodos

    • Agregar dos columnas; “Actualizaciones diarias” y “Registros diarios”.
    • Al actualizar el campo “Actualizaciones diarias”, borrar el campo y actualizar el campo “Registros diarios” con las actualizaciones anteriores y actuales.
    • Asegurarse de que el campo “Registros diarios” sea de solo lectura y no se pueda editar.

    Solución

    Para lograr este objetivo, se pueden seguir los siguientes pasos:

    1. En la hoja de cálculo del formulario de usuario de Google, agregar dos columnas “Actualizaciones diarias” y “Registros diarios” junto a la columna “País”.
    2. En el archivo de Google Apps Script, agregar una función que se ejecute cuando se edite el formulario de usuario.
    3. En la función, verificar si la celda editada está en la columna “Actualizaciones diarias”.
    4. Si la celda editada está en la columna “Actualizaciones diarias”, obtener la fecha y hora actuales y escribirlas en la columna “Registros diarios” junto a las actualizaciones anteriores y actuales.
    5. Borrar el contenido de la celda “Actualizaciones diarias” para poder agregar la próxima actualización.
    6. Por último, desactivar la edición en la columna “Registros diarios” de la hoja de cálculo de Google para que sea de solo lectura.
    function onFormSubmit(e) {
      var sheet = SpreadsheetApp.getActiveSheet();
      var range = e.range;
      var column = range.getColumn();
    
      if (column == 9) { // Verificar si la celda editada está en la columna "Actualizaciones diarias" (columna 9)
        var currentValue = range.getValue();
        var currentDate = new Date();
    
        var logCell = sheet.getRange(range.getRow(), 10);
        var previousValue = logCell.getValue();
    
        if (previousValue != "") { // Si la celda "Registros diarios" tiene una actualización anterior, agregarla a la nueva actualización
          currentValue = previousValue + "\n" + currentValue;
        }
    
        logCell.setValue(currentValue + " - " + currentDate.toLocaleDateString()); // Establecer el valor de la celda "Registros diarios" con las actualizaciones anteriores y actuales
    
        range.clearContent(); // Borrar el contenido de la celda "Actualizaciones diarias" para la próxima actualización
      }
    
      sheet.getRange('J:J').protect(); // Proteger la columna "Registros diarios" para desactivar la edición
    }
    

Comments are closed.