Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

121
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda