Google apps script 如何根据从Google表单输入的数据自动设置日期?

Google apps script 如何根据从Google表单输入的数据自动设置日期?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,有没有办法根据表单中输入的数据自动设置日期 尝试了以下操作,但当数据进入工作表时,除非我手动编辑,否则不会填充新日期 我试过一次,同样的结果 function onEdit(e){ addTimeStamp(e); } function addTimeStamp(e){ //Variables var startRow = 2; var targetColumn = 3; var ws = "Form Responses 1"; //Get modifi

有没有办法根据表单中输入的数据自动设置日期

尝试了以下操作,但当数据进入工作表时,除非我手动编辑,否则不会填充新日期

我试过一次,同样的结果

 function onEdit(e){

 addTimeStamp(e);

}

function addTimeStamp(e){

//Variables

var startRow = 2; 

var targetColumn = 3;

var ws = "Form Responses 1";

//Get modified row and column

var row = e.range.getRow();

var col = e.range.getColumn();


if(col === targetColumn && row >= startRow && e.source.getActiveSheet().getName() === ws){

var currentDate = new Date();

e.source.getActiveSheet().getRange(row,7).setValue(currentDate);

if(e.source.getActiveSheet().getRange(row,6).getValue() ==""){

e.source.getActiveSheet().getRange(row,6).setValue(currentDate);

}// End IF - Check if Date created exists

}//End IF - Check column,row & worksheet

}//End Function AddTimeStamp
表单向链接工作表提交数据时,不会触发onEdit()触发器。它仅为用户编辑而激发。但是您可以从onFormSubmit触发器执行相同的功能

这是事件对象包含的内容:

{"authMode":"","namedValues":{"Timestamp":["5/23/2021 19:53:03"],"COL1":["","2"],"Email Address":[""],"COL2":["","1"],"COL3":["","My answer"]},"range":{"columnEnd":8,"columnStart":1,"rowEnd":21,"rowStart":21},"source":{},"triggerUid":"","values":["5/23/2021 19:53:03","","","","","2","1","My answer",""]}
因此,您可以访问range、range.columnStart、range.columnEnd和range.rowStart和range.rowEnd始终相同,因为它一次提交一行。因此,您必须重新调整当前函数中的一些值

所以我相信这将是您的新时间戳函数()

此代码设计为在onFormSubmit触发器而不是onEdit触发器上运行。请注意,正如我所描述的,表单提交执行的编辑不会创建OneEdit触发器。您只能使用用户编辑创建onedit触发器

编辑: 您应该进行安装以使其正常工作(请参阅和表单提交)。

表单向链接工作表提交数据时,不会触发OneEdit()触发器。它仅为用户编辑而激发。但是您可以从onFormSubmit触发器执行相同的功能

这是事件对象包含的内容:

{"authMode":"","namedValues":{"Timestamp":["5/23/2021 19:53:03"],"COL1":["","2"],"Email Address":[""],"COL2":["","1"],"COL3":["","My answer"]},"range":{"columnEnd":8,"columnStart":1,"rowEnd":21,"rowStart":21},"source":{},"triggerUid":"","values":["5/23/2021 19:53:03","","","","","2","1","My answer",""]}
因此,您可以访问range、range.columnStart、range.columnEnd和range.rowStart和range.rowEnd始终相同,因为它一次提交一行。因此,您必须重新调整当前函数中的一些值

所以我相信这将是您的新时间戳函数()

此代码设计为在onFormSubmit触发器而不是onEdit触发器上运行。请注意,正如我所描述的,表单提交执行的编辑不会创建OneEdit触发器。您只能使用用户编辑创建onedit触发器

编辑:
您应该进行安装以使其正常工作(请参阅并提交表单)。

谢谢@Cooper,我可以按原样运行代码,还是使用onEdit?谢谢。如果不提供事件对象,则无法从脚本编辑器运行它。这段代码设计为在onFormSubmit触发器上运行,而不是在onEdit上运行。正如我在回答中指出的那样,表单提交执行的编辑不会触发OneEdit触发器。再次感谢@Cooper,我尝试了上面的代码,并将触发器设置为addTimeStamp(e),但我在工作表上没有得到任何值。也许我做错了什么。你必须提交适当的表格才能让它生效。非常感谢。我尝试过几次,但似乎无法获得自动时间戳来填充。在我的脚本中,我只使用了您的答案,并在addtrigger函数下添加了触发器。我不确定我是否需要声明代码之外的任何其他变量。谢谢@Cooper,我可以按原样运行代码,还是使用onEdit?谢谢。如果不提供事件对象,则无法从脚本编辑器运行它。这段代码设计为在onFormSubmit触发器上运行,而不是在onEdit上运行。正如我在回答中指出的那样,表单提交执行的编辑不会触发OneEdit触发器。再次感谢@Cooper,我尝试了上面的代码,并将触发器设置为addTimeStamp(e),但我在工作表上没有得到任何值。也许我做错了什么。你必须提交适当的表格才能让它生效。非常感谢。我尝试过几次,但似乎无法获得自动时间戳来填充。在我的脚本中,我只使用了您的答案,并在addtrigger函数下添加了触发器。我不确定是否需要声明代码之外的任何其他变量。