Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

373
Views
¿Cómo obtener un valor si el tiempo presente está dentro de una ventana de tiempo?

He estado tratando de copiar el valor en A9 en la celda de la columna D, cuando la hora actual ( now o time.new ) corresponde a la hora especificada en la misma fila en la columna C.

Logré obtener una secuencia de comandos que extrae el valor D1 una vez cada hora en la última celda de la columna D, lo que estaría perfectamente bien si el disparador "controlado por el tiempo" no eligiera un tiempo aleatorio en la hora. Tiene que ser exactamente 2 minutos después de cada hora completa (+/- 30 segundos). Así que pensé en hacer que el script se ejecutara cada minuto y pegar el valor en una celda si el tiempo en la columna C está dentro de 1h2m30s y 1h1m30s antes de la hora actual... Pero con mi script parece haber un error.

Encuentre el documento de prueba aquí , donde la función se ejecuta actualmente una vez cada hora.

El script de aplicaciones que se ejecuta en un momento aleatorio cada hora es el siguiente (actualmente en ejecución):

 function myFunction() { var ss= SpreadsheetApp.getActiveSpreadsheet(); var sheet= ss.getSheetByName('FACTS & PREDICTIONS'); var Direction=SpreadsheetApp.Direction; let aLast =sheet.getRange("D"+(sheet.getLastRow()+1)).getNextDataCell(Direction.UP).getRow(); let val= sheet.getRange('A9').getDisplayValue(); sheet.getRange(`D${aLast+1}`).setValue(val); }

El nuevo script que he estado tratando de hacer es el siguiente:

 function myFunction() { var ss= SpreadsheetApp.getActiveSpreadsheet(); var sheet= ss.getSheetByName('Admin Panel'); var Direction=SpreadsheetApp.Direction; if(e.source.getActiveSheet().getName()=="FACTS & PREDICTIONS") { if(col == 4 && cell.offset(0,-1).getValue() > new Date()-TIME(1,2,30) && col == 4 && cell.offset(0,-1).getValue() < new Date()-TIME(1,1,30)){ let val= sheet.getRange('A9').getDisplayValue(); e.source.getActiveSheet().getRange(row,4).setValue(val); } } }

El script anterior en realidad está parcheado porque no tengo ni idea de Apps Scrips. No tengo idea de qué está mal con el código o qué necesito cambiar.

Editar: solo busque esto , donde puede hacer que un disparador se bloquee en un minuto específico, PERO tiene una desviación de +/- 15 minutos. Inútil...

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

El uso de un disparador controlado por tiempo para ejecutar cada minuto puede ser el enfoque correcto, pero las expresiones que comparan los objetos de Fecha son incorrectas porque compararlos siempre será falso.

Como es nuevo en Google Apps Script, puede que le resulte útil dedicar un tiempo a aprender los conceptos básicos y las peculiaridades comunes sobre Google Apps Script y JavaScript, es decir, comparar dos fechas con JavaScript .

También es posible que deba reconsiderar si Google Sheets / Apps Script es la herramienta adecuada para esta tarea, especialmente cuando se requiere trabajar con tiempos precisos / tolerancias de tiempo pequeñas y se requiere una alta confiabilidad. Esto se debe a que los activadores de Google Apps Script no son 100 % confiables, es decir, es posible que el activador no se ejecute todos y cada uno de los minutos; los activadores controlados por tiempo tienen una cuota de ejecución de tiempo total diaria.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!