template setsandboxmode script modal google example docs developers apps app javascript datetime google-apps-script

javascript - setsandboxmode - Fechas formateadas en un script de Google Apps



https developers google com apps script (3)

Creo que las ''fechas'' en su hoja de cálculo no son objetos de fecha, son solo cadenas y JavaScript lo evalúa como 0, es por eso que obtiene un valor de fecha del ''origen'' (aka época) menos el desplazamiento GMT ... dependiendo de cómo estos valores vienen en las células puede haber diferentes soluciones a esto. ¿Puedes mostrar datos de ejemplo e indicar cómo fueron creados?

Para comprobar si mi conjetura es correcta, simplemente podría intentar cambiar el formato de visualización de las celdas de ''fecha'' usando la interfaz de la hoja de cálculo. Si puede cambiarlo allí y obtener resultados coherentes, entonces estoy equivocado ... si no ... Bueno, supongo que tengo razón :-)

Intento obtener una hoja de cálculo con fechas formateadas simples cuando se envía un formulario, pero todas las fechas, incluida la marca de tiempo, siguen publicándose como "31 de diciembre de 1969 a las 2:00 p.m." ... ¿Qué estoy haciendo mal? CUALQUIER ayuda sería muy apreciada.

function formSubmitReply(e) { var sheet = SpreadsheetApp.getActiveSheet(); var row = sheet.getActiveRange().getRowIndex(); var lastRow = sheet.getLastRow(); // Set the status of a new ticket to ''New''. sheet.getRange(lastRow, getColIndexByName("Status")).setValue("New"); var ticketTime = sheet.getRange(row, getColIndexByName("Timestamp")).getValue(); var subdate = Utilities.formatDate(new Date(ticketTime), "GMT-10", "EEE MM/dd/yyyy ''at'' h:mm a"); sheet.getRange(lastRow, getColIndexByName("Timestamp")).setValue(subdate); var sDate = sheet.getRange(row, getColIndexByName("Start Date")).getValue(); var strtdate = Utilities.formatDate(new Date(sDate), "GMT-10", "EEE, MMM dd, yyyy"); sheet.getRange(lastRow, getColIndexByName("Start Date")).setValue(strtdate); var sTime = sheet.getRange(row, getColIndexByName("Start Time")).getValue(); var strttime = Utilities.formatDate(new Date(sTime), "GMT-10", "h:mm"); //sheet.getRange(lastRow, getColIndexByName("Start Time")).setValue(strttime); var eDate = sheet.getRange(row, getColIndexByName("End Date")).getValue(); var enddate = Utilities.formatDate(new Date(eDate), "GMT-10", "EEE, MMM dd, yyyy"); sheet.getRange(lastRow, getColIndexByName("End Date")).setValue(enddate); var eTime = sheet.getRange(row, getColIndexByName("End Time")).getValue(); var endtime = Utilities.formatDate(new Date(eTime), "GMT-10", "h:mm"); //sheet.getRange(lastRow, getColIndexByName("End Time")).setValue(endtime); }



Este código toma la fecha de la primera fila que lleva "Timestamp", es decir, la new Date ("TimeStamp") por lo que está volviendo a la fecha incorrecta como getRowIndex return 1:

function formSubmitReply(e) { var sheet = SpreadsheetApp.getActiveSheet(); var row = sheet.getActiveRange().getRowIndex(); //try to increment row as below to get row 2 row++; var lastRow = sheet.getLastRow(); //increment last row to write to new row to observe new date lastRow++; // Set the status of a new ticket to ''New''. sheet.getRange(lastRow, getColIndexByName("Status")).setValue("New"); var ticketTime = sheet.getRange(row, getColIndexByName("Timestamp")).getValue(); var subdate = Utilities.formatDate(new Date(ticketTime), "GMT-10", "EEE MM/dd/yyyy ''at'' h:mm a"); //use log window select views-> logs to see your output Logger.log("subdate : "+subdate); sheet.getRange(lastRow, getColIndexByName("Timestamp")).setValue(subdate); var sDate = sheet.getRange(row, getColIndexByName("Start Date")).getValue(); var strtdate = Utilities.formatDate(new Date(sDate), "GMT-10", "EEE, MMM dd, yyyy"); sheet.getRange(lastRow, getColIndexByName("Start Date")).setValue(strtdate); var sTime = sheet.getRange(row, getColIndexByName("Start Time")).getValue(); var strttime = Utilities.formatDate(new Date(sTime), "GMT-10", "h:mm"); //sheet.getRange(lastRow, getColIndexByName("Start Time")).setValue(strttime); var eDate = sheet.getRange(row, getColIndexByName("End Date")).getValue(); var enddate = Utilities.formatDate(new Date(eDate), "GMT-10", "EEE, MMM dd, yyyy"); sheet.getRange(lastRow, getColIndexByName("End Date")).setValue(enddate); var eTime = sheet.getRange(row, getColIndexByName("End Time")).getValue(); var endtime = Utilities.formatDate(new Date(eTime), "GMT-10", "h:mm"); //sheet.getRange(lastRow, getColIndexByName("End Time")).setValue(endtime); } //enter code here