Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

327
Vistas
¿Cómo implementar la declaración IF-ELSE para cambiar el valor de la celda usando el script de la aplicación?

Aquí estoy tratando de cambiar el valor de la celda según la declaración IF-ELSE.

Como puede ver en la imagen a continuación, cuando el usuario intente ejecutar el script por primera vez, se enumerarán algunos archivos de Google Drive en la hoja con la marca ESTADO como "archivo nuevo" (fila 2 a 5).

Sin embargo, si se cargaron archivos nuevos en la unidad de Google, el usuario ejecutará un script "verificar archivos nuevos" para completar solo los archivos nuevos cargados en la hoja de Google (filas 6 y 7). Pero su marca de ESTADO está en blanco como se muestra en la imagen.

ingrese la descripción de la imagen aquí

Por lo tanto, utilicé la declaración IF-ELSE para convertir el ESTADO de la fila 2 a la 5 (" archivo nuevo" en "archivo antiguo ") Y la fila en blanco de 6 y 7 como "archivo nuevo" .

Aquí está el código:

 function updateMarker(){ var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); var cellValue = sheet.getRange("C2:C"+ sheet.getLastRow()).getValue(); Logger.log(cellValue); if (cellValue == 'new file'){ sheet.getRange("C2:C"+ sheet.getLastRow()).setValue('OLD FILE'); } if(cellValue == '' ){ sheet.getRange("C2:C"+ sheet.getLastRow()).setValue('NEW FILE'); } }

Si ejecuto el código, convierte todo el valor de la celda desde la fila 2 hasta la 7 como "archivo antiguo" . Lo cual supongo que detecta solo la primera declaración if (cellValue == 'new file') .

Mi meta es

  1. para convertir el marcador de "archivo nuevo" en "archivo antiguo"
  2. para establecer el valor de celda vacía de los nuevos archivos cargados como "nuevo archivo"

¿Como puedó resolver esté problema?

DESPUÉS DE IMPLEMENTAR EL CÓDIGO DE SOLUCIÓN DADO ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Después de ejecutar por segunda y tercera vez, el ESTADO cambia y viceversa.

¿El ESTADO no cambia solo si el valor de la celda es "nuevo archivo" y si hay una celda vacía ?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Llamar a getValue() en un rango de más de una celda solo devolverá el valor en la celda superior izquierda del rango.

Entonces la linea

 var cellValue = sheet.getRange("C2:C"+ sheet.getLastRow()).getValue()

en realidad solo establece cellValue en el valor en C2 , o 'new file' .

Esto hace que la línea:

 if (cellValue == 'new file')

siempre se evalúa como verdadero, por lo que se cambian todas las celdas.

Modificaciones:

  • Use .getValues() en lugar de getValue()
  • Bucle a través de todas las celdas
  • Vuelva a establecer la nueva matriz OLD FILE/NEW FILE en el rango de columnas
 function updateMarker() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1") const cells = sheet.getRange("C2:C" + sheet.getLastRow()) const cellValues = cells.getValues() Logger.log(cellValues) const newValues = [] cellValues.forEach((row) => { if (row[0] === "new file") { newValues.push(['OLD FILE']) } else if (row[0] === "OLD FILE" || row[0] === "NEW FILE") { newValues.push([row[0]]) } else { newValues.push(['NEW FILE']) } }) cells.setValues(newValues) }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda