代码之家  ›  专栏  ›  技术社区  ›  beano

确定Google表单响应的正确日期格式

  •  1
  • beano  · 技术社区  · 7 年前

    确定Google表单响应的正确日期格式(dd/mm或mm/dd)的最佳方法是什么。

    使用NamedValue对象时:

    function onFormSubmit(e){
     var namedValues = e.namedValues;
     var date = namedValues['Date']; // Date=[05/06/2018]
     var date = new Date(date);
     Logger.log(date); //Sun May 06 00:00:00 GMT+10:00 2018
    }
    

    当我使用电子表格中的值时:

    function onFormSubmit(e){  
      var range = e.range;
      var row = range.getRow();  
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheetByName('Form Responses 1');
      var date = sheet.getRange(row,2).getValue();
      Logger.log(date); //Mon Jun 05 00:00:00 GMT+10:00 2018
    }
    

    我不知道我是否应该这样做,但我很犹豫在onFormSubmit触发器中使用电子表格中的值,因为我过去经历过不稳定的情况,我认为触发器在数据发布到电子表格之前运行。

    我在谷歌表单文档中找不到任何说明日期回复是否总是以一致的格式。如果总是dd/mm/yyyy,我可以使用字符串部分构造日期。

    有没有办法从namedValues对象确定正确的日期格式?

    P、 我宁愿不利用这一刻。js库对于这一需求,非常渴望了解它是否可能没有。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Jason Allshorn    7 年前

    您的Google表单将不断以相同的格式提交日期,但您的工作表可能会更改格式的外观。

    还有,现在有一个日期 format utility 内置到应用程序脚本中。您可以将日期字符串更改为所需的格式。

     // This formats the date as Greenwich Mean Time in the format
     // year-month-dateThour-minute-second.
     var formattedDate = Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd'T'HH:mm:ss'Z'");
     Logger.log(formattedDate);