[英]Formatted dates in a Google Apps script
我正在嘗試在提交表單時獲得一個包含簡單格式日期的電子表格,但是所有日期,包括時間戳都會被發布為“1969年12月31日下午2:00”......我做錯了什么? 任何幫助將不勝感激。
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);
}
我認為電子表格中的“日期”不是日期對象,它們只是字符串而JavaScript將其評估為0,這就是為什么你得到'origin'(又名epoch)的日期值減去GMT偏移...取決於如何這些值出現在單元格中,可能會有不同的解決方案。 你能告訴他們如何創建示例數據嗎?
要檢查我的猜測是否正確,您可以嘗試使用電子表格界面更改“日期”單元格的顯示格式。如果您可以在那里更改並得到連貫的結果,那么我錯了......如果不是......好吧我想我是對的:-)
我建議回顧一下:
格式模式如下:
http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
還有一個例子來幫助你
Utilities.formatDate(thisFile.getLastUpdated(),“GMT-5”,“yyyy / MM / dd,HH:mm:ss”)
此代碼采用帶有“Timestamp”的第一行的new Date ("TimeStamp")
,即new Date ("TimeStamp")
因此當getRowIndex返回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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.