【问题标题】:Google Script - Pull Date from Form Field and FormatGoogle Script - 从表单字段和格式中提取日期
【发布时间】:2021-11-24 20:30:45
【问题描述】:

我正在尝试完成一个 google 表单的脚本,该脚本将使用表单中的数据输入重新命名通过表单上传的上传文件。我希望日期格式为 yyyy.MM.dd。默认情况下,我的日期变量将表单的日期字段输出为 yyyy-MM-dd。

我尝试添加一个格式化日期变量来重新格式化日期,但随后它停止从表单中读取日期,而是以正确的 yyyy.MM.dd 格式输出今天的日期。

任何关于如何让脚本将表单字段中的日期格式化为 yyyy.MM.dd 的提示将不胜感激!

我有以下 -

 var form=FormApp.getActiveForm();
 
// returns the total number of form submissions
 var length=form.getResponses().length;
 
 var date=form.getResponses()[length-1].getItemResponses()[1].getResponse();
 var formattedDate = Utilities.formatDate(new Date(),'America/Los_Angeles','yyyy.MM.dd');
 var transaction=form.getResponses()[length-1].getItemResponses()[2].getResponse();
 var id=form.getResponses()[length-1].getItemResponses()[7].getResponse();

 var file=DriveApp.getFileById(id);
 name = file.getName();
 

 var name = formattedDate + ' - ' + transaction + ' - ' + name.split(' - ')[1]
 file.setName(name);
 
 }

在我添加以下内容并提交表单时记录日期和格式化日期:

 {  Logger.log(date.toString());
       Logger.log(formattedDate.toString());
     }

在我添加以下内容并提交表单时记录日期和格式化日期:

{ Logger.log(date);
   Logger.log(formattedDate);   
 }

加上在脚本编辑器中运行脚本的视图 > 日志结果:

将日期代码更新为

var date=form.getResponses()[length-1].getItemResponses()[1].getResponse();
      date = new Date(date);
  var formattedDate = Utilities.formatDate(date,'America/Los_Angeles','yyyy.MM.dd');

提交的表格日期为 1989 年 7 月 22 日,但日志显示它注册为 1989 年 7 月 21 日为日期和格式化日期,我不知道为什么... 形式 -

日志 -

最终代码 -

 var form=FormApp.getActiveForm();
     
    // returns the total number of form submissions
     var length=form.getResponses().length;
     
     var date=form.getResponses()[length-1].getItemResponses()[1].getResponse();
      date = new Date(date);
var formattedDate = Utilities.formatDate(date,'UTC','yyyy.MM.dd');
     var transaction=form.getResponses()[length-1].getItemResponses()[2].getResponse();
     var id=form.getResponses()[length-1].getItemResponses()[7].getResponse();
    
     var file=DriveApp.getFileById(id);
     name = file.getName();
     
    
     var name = formattedDate + ' - ' + transaction + ' - ' + name.split(' - ')[1]
     file.setName(name);
     
     }

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    我在您的代码中看到的是,在使用格式日期实用程序时,您正在使用“新日期”,这就是为什么它返回今天的日期,您需要提供您的日期变量。 试试这个

    编辑-1 使用new Date(date);将日期变量从表单响应转换为日期

     var form=FormApp.getActiveForm();
         
        // returns the total number of form submissions
         var length=form.getResponses().length;
         
         var date=form.getResponses()[length-1].getItemResponses()[1].getResponse();
          date = new Date(date);
    var formattedDate = Utilities.formatDate(date,'America/Los_Angeles','yyyy.MM.dd');
         var transaction=form.getResponses()[length-1].getItemResponses()[2].getResponse();
         var id=form.getResponses()[length-1].getItemResponses()[7].getResponse();
        
         var file=DriveApp.getFileById(id);
         name = file.getName();
         
        
         var name = formattedDate + ' - ' + transaction + ' - ' + name.split(' - ')[1]
         file.setName(name);
         
         }
    

    【讨论】:

    • 我在发布之前尝试过这个(应该说) - 如果我使用“日期”而不是“新日期”,它根本不会重命名文件:(
    • 哦,我知道你能在执行代码时分享两个变量(日期和格式化日期)的日志吗?
    • 我想我设法记录了这些项目(不确定是否有办法获得更多细节 - 我承认这些事情的新手) - 添加到原始问题
    • 写 Logger.log(date) 和 Logger.log(formattedDate) 来获取日志,然后在你的应用程序脚本窗口中去查看>>查看日志(ctrl+enter是快捷方式),你也是更多细节可以看这个developers.google.com/apps-script/reference/base/logger
    • 添加了我最初记录的内容 + 使用 Logger.log(date) 和 Logger.log(formattedDate) 的上下文,并包含在脚本编辑器中运行和提交表单本身时的日志屏幕截图
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多