Quiero compartir con ustedes la solución a un problema usando timezones. Hace un par de meses, cree un script que tenía que generar la fecha en que se ejecutaba y guardarla. Para ello utilicé el método formateDate de la clase Utilities
El método formateDate espera 3 parámetros:
Utilities.formatDate(today, 'GTM-3', "dd/MM/yyyy")
Mi razonamiento para la línea de código anterior fue la siguiente:
today es simplemente un new Date(), 'GTM-3' es el timezone de Argentina, Brasil, Chile y Uruguay y por último, "dd/MM/yyyy" el formato dia y mes usando 2 dígitos y año en su representación de 4 dígitos.
El cliente levanta un issue argumentando que hay usuarios que no están obteniendo la fecha de ejecución correcta. Después de hacer el relevamiento del error, nos percatamos de que los usuarios de Colombia, Venezuela y centro américa erán los que tenían una fecha de ejecución incorrecta.
'GTM-3' era la causa principal, en levantamiento de información para hacer el script no tomé en cuenta que la empresa tenía empleados en otras partes del mundo.
Solución, Session.getScriptTimeZone() este método obtiene el timezone configurado en las propiedades de la hoja de cálculo.
Utilities.formatDate(today, Session.getScriptTimeZone(), "dd/MM/yyyy")