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

161
Vistas
Secuencia de comandos de Google Sheets de bucles

El problema que estoy tratando de resolver es el siguiente. Estoy tratando de hacer un bucle que encuentre la letra "Y" y solo la Y. Quiero que sea así, si una celda tiene Y, hará que las 4 filas a la izquierda se llamen %NULL% . El problema es que hay 2 celdas por fila donde podría estar Y.

Este es el código que comencé pero no sé a dónde ir.

 function Loop1(){ var sheet = SpreadsheetApp.getActive().getSheetByName("EXP50"); var data = sheet.getDataRange().getValues(); for(var i = 1; i< data.length; i++){ if(data[i][7-1] === "Y"){ sheet.getRange(i + 1, 3).setValue("%NULL%"); sheet.getRange(i + 1, 4).setValue("%NULL%"); sheet.getRange(i + 1, 5).setValue("%NULL%"); sheet.getRange(i + 1, 6).setValue("%NULL%"); } if(data[i][13-1] === "Y") { sheet.getRange(i + 1, 9).setValue("%NULL%"); sheet.getRange(i + 1, 10).setValue("%NULL%"); sheet.getRange(i + 1, 11).setValue("%NULL%"); sheet.getRange(i + 1, 12).setValue("%NULL%"); } } }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Creo que su objetivo es el siguiente.

  • Desea verificar las columnas "G" y "M".
  • Cuando el valor de celda de las columnas es "Y", desea poner %NULL% en las columnas "C" - "F" y las columnas "I" - "L" en la misma fila.
  • Quiere lograr esto usando Google Apps Script.

Puntos de modificación:

  • Pensé que setValue se usa en el ciclo, el costo del proceso será alto.

En esta respuesta, al reducir el costo del proceso, me gustaría proponer los siguientes 2 patrones.

Patrón 1:

En este patrón, se utilizan los métodos de getValues y setValues .

 function Loop1() { var sheet = SpreadsheetApp.getActive().getSheetByName("EXP50"); var range = sheet.getDataRange(); var data = range.getValues(); data.forEach(r => { var [g, m] = [r[6], r[12]]; var temp = Array(4).fill("%NULL%"); if (g == "Y") r.splice(2, 4, ...temp); if (m == "Y") r.splice(8, 4, ...temp); }); range.setValues(data); }

Patrón 2:

En este patrón, se utiliza TextFinder.

 function Loop1() { var sheet = SpreadsheetApp.getActive().getSheetByName("EXP50"); var ranges = sheet.createTextFinder("Y").matchCase(true).matchEntireCell(true).findAll().reduce((ar, r) => { var col = r.getColumn(); var row = r.getRow(); if (col == 7) ar.push(`C${row}:F${row}`); if (col == 13) ar.push(`I${row}:L${row}`); return ar; }, []); sheet.getRangeList(ranges).setValue("%NULL%"); }

Referencias:

  • obtenerValores()
  • establecerValores(valores)
  • createTextFinder(findText) de la hoja de clase
about 4 years ago · Juan Pablo Isaza Denunciar

0

En lugar de un bucle if , ¿no podrías usar algo como esto?

 function Loop1(){ var sheet = SpreadsheetApp.getActive().getSheetByName("EXP50"); var data = sheet.getDataRange().getValues(); while 1 = 1: if(data[i][7-1] === "Y"){ sheet.getRange(i + 1, 3).setValue("%NULL%"); sheet.getRange(i + 1, 4).setValue("%NULL%"); sheet.getRange(i + 1, 5).setValue("%NULL%"); sheet.getRange(i + 1, 6).setValue("%NULL%"); } if(data[i][13-1] === "Y") { sheet.getRange(i + 1, 9).setValue("%NULL%"); sheet.getRange(i + 1, 10).setValue("%NULL%"); sheet.getRange(i + 1, 11).setValue("%NULL%"); sheet.getRange(i + 1, 12).setValue("%NULL%"); } } }

(Disculpas, no sé si esto resolverá tu problema).

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