格式化Google Apps脚本中的日期 [英] Formatted dates in a Google Apps script

查看:285
本文介绍了格式化Google Apps脚本中的日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我提交表单时,我试图获得一个简单格式化日期的电子表格,但所有日期,包括时间戳记都会保持为1969年12月31日2:00 PM...我做错了什么?任何帮助将不胜感激。

  function formSubmitReply(e){
var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getActiveRange()。getRowIndex();
var lastRow = sheet.getLastRow();
//将新票的状态设置为新。

sheet.getRange(lastRow,getColIndexByName(Status))。setValue(New);

var ticketTime = sheet.getRange(row,getColIndexByName(Timestamp))。getValue();

var subdate = Utilities.formatDate(new Date(ticketTime),GMT-10,h:mm a上的EEE MM / dd / yyyy);
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(开始日期))。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 offset ...的日期值,具体取决于这些值在单元格中的含义可能有不同的解决方案。您能否显示示例数据,告诉他们如何创建它们?为了检查我的猜测是否正确,您可以尝试使用电子表格界面更改date单元格的显示格式。如果您可以将其更改,然后获取连贯的结果然后我错了...如果不是...我猜我是对的:-)


I'm trying to get a spreadsheet with simple formatted dates when a form is submitted, but all dates, including the timestamp keep getting posted as "Dec 31 1969 2:00PM"... What am I doing wrong? ANY help would be greatly appreciated.

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);
}

解决方案

I think the 'dates' in your spreadsheet are not date objects, they are just strings and JavaScript evaluate it as 0, that's why you get a date value of the 'origin' (aka epoch) minus GMT offset...depending on how these values comes in the cells there might be different solutions to this. Can you show example data an tell how they were created?

To check if my guess is right you could simply try to change the display format of the 'date' cells using the spreadsheet interface.If you can change it there and get coherent results then I'm wrong... if not ... well I guess I'm right :-)

这篇关于格式化Google Apps脚本中的日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆