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

116
Vistas
Repita el guión hasta que se cumplan las condiciones

Tengo una hoja de Google con un temporizador configurado para las 5 am y todos los días quiero que la hoja:

  1. Actualizar, que incluye algunos enlaces a datos externos, por lo que agrego una pausa de 10 segundos. Hay aproximadamente 100 filas.
  2. Escribí con éxito una fórmula en la columna U para decirme si los datos se importaron correctamente y, si no, devuelve el texto "ERROR".
  3. Busque "ERROR" en la columna U.
  4. Si hay algún "ERROR" en la columna U, actualice la página nuevamente y espere 10 segundos.
  5. Repita hasta que no haya "ERRORES"
  6. Solo cuando no haya "ERRORES" en la columna U, copie los valores en la columna V y pegue los valores en la columna W.

Creo que estoy cerca ... Simplemente no puedo entender cómo decirle que vuelva a ejecutar la parte "SI" si todavía encuentra "ERRORES". ¡Cualquier entrada es apreciada!

Aquí hay un enlace al archivo -> https://docs.google.com/spreadsheets/d/1GFN3tXRlqxo9J9iNpZMPk-e-WlNGVjJ4zSqZ1_aEE_U

 function HardKeyValues() { var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Players'), true); SpreadsheetApp.flush(); Utilities.sleep(10000); var findVal = spreadsheet.getRange('U:U').getValue() if(findVal.match('ERROR')){ SpreadsheetApp.flush(); Utilities.sleep(10000)} else{ spreadsheet.getRange('W:W').activate(); spreadsheet.getRange('V:V').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);} }
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

En realidad, no usaría el temporizador de apagado automático de esta manera.

Pero si lo hiciera, lo escribiría así:

 function HardKeyValues() { const ss = SpreadsheetApp.getActive(); const psh = ss.getSheetByName('Players'); SpreadsheetApp.flush(); Utilities.sleep(10000); const vs = psh.getRange('U1:U' + psh.getLastRow()).getDisplayValues().flat(); if (vs.find(e => e.includes("ERROR"))) { SpreadsheetApp.flush(); Utilities.sleep(10000); } else { sh.getRange("V1:V" + sh.getLastRow()).copyTo(sh.getRange("W1:W" + sh.getLastRow(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false)); } }

El uso de rangos indeterminados como "W:W" a menudo conduce a muchos valores nulos al final de la matriz.

about 4 years ago · Juan Pablo Isaza Denunciar

0

¿Qué pasa con el uso de un ciclo while?

 function HardKeyValues() { var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Players'), true); SpreadsheetApp.flush(); Utilities.sleep(10000); var findVal = spreadsheet.getRange('U:U').getValue() while (findVal.match('ERROR')){ SpreadsheetApp.flush(); Utilities.sleep(10000)} findVal = spreadsheet.getRange('U:U').getValue() } spreadsheet.getRange('W:W').activate(); spreadsheet.getRange('V:V').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Tal vez podría intentar usar un bucle for, solo asegúrese de tener una variable que eventualmente pueda cumplir con el requisito para que el bucle for se detenga, de lo contrario, se convertirá en un bucle para siempre;)

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