【问题标题】:Google scripts - Formatting date from a form inputGoogle 脚本 - 从表单输入格式化日期
【发布时间】:2020-09-05 09:41:39
【问题描述】:

作为序言,我对此很陌生,但我目前有一个脚本,可以根据输入到我的谷歌表单中输出谷歌文档/PDF。

每当提交新表单时都会输出 PDF,目前日期的格式显示为 DD/MM/YY,但我希望它显示为 dd MMMM yyyy,即 2020 年 5 月 19 日而不是 20 年 5 月 19 日。

我尝试使用以下方法更改格式

var signDate = e.values[1];
var formatSignDate = Utilities.formatDate(signDate, "GMT+1", "dd MMMM yyyy");
body.replaceText('{{Execution Date}}', formatSignDate);

但我收到以下错误

异常:参数 (String,String,String) 与 Utilities.formatDate 的方法签名不匹配。 在 autoFillFromForm(代码:17:28)

我做错了什么?我不能将 .formatDate 与工作表单元格中的日期一起使用吗?

编辑:带有signDate日志的错误消息

Stackdriver logs Info signDate = 20/05/2020 错误异常:参数 (String,String,String) 的方法签名不匹配 实用程序.formatDate。在 autoFillFromForm(代码:23:34)

【问题讨论】:

    标签: date google-apps-script google-sheets google-forms


    【解决方案1】:

    异常:参数 (String,String,String) 与 Utilities.formatDate 的方法签名不匹配

    表示signDate 未被正确识别为日期对象

    请提供signDate的日志,以帮助您进行更详细的故障排除。

    更新

    如果您有一个英国格式 (DD/MM/YYYY) 的日期字符串,它不会被自动识别为 Javascript date object

    你需要转换它,例如:

      var convertedDate = new Date(signDate.split('/')[2], signDate.split('/')[1] - 1, signDate.split('/')[0]);
      Logger.log(convertedDate);
      var formatSignDate = Utilities.formatDate(convertedDate, "GMT+1", "dd MMMM yyyy");
      Logger.log(formatSignDate);
    

    注意:如果您将其设置为与脚本时区不同的时区,则如上所述使用 Utilities.formatDate() 可能会给您错误的日期。

    【讨论】:

    • 谢谢,当我登录 signDate 我得到这个:Info signDate = 20/05/2020
    • 问题是英国时区,看看我更新的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多