簡體   English   中英

Google Apps腳本中的格式化日期

[英]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偏移...取決於如何這些值出現在單元格中,可能會有不同的解決方案。 你能告訴他們如何創建示例數據嗎?

要檢查我的猜測是否正確,您可以嘗試使用電子表格界面更改“日期”單元格的顯示格式。如果您可以在那里更改並得到連貫的結果,那么我錯了......如果不是......好吧我想我是對的:-)

我建議回顧一下:

https://developers.google.com/apps-script/reference/utilities/utilities?hl=es#formatDate(Date,String,String)

格式模式如下:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM