如何解决有没有办法阻止事件在Google Apps脚本中完成? 即e.preventDefault
我当前正在将用户通过Google表单输入的日期与今天的日期进行比较,如果日期尚未发生,我想阻止表单数据插入到Google响应电子表格中。我已经用谷歌搜索了一下,但是找不到类似于具有e.preventDefault()的DOM的东西。这是我的代码在Google脚本编辑器中的样子:
//first,verify the date of the submission is not before the date of the game (has not happened yet)
var todayDate = new Date();
var gameDate = new Date(ogkGameDate);
if (gameDate < todayDate)
{
//send an email to admin and user that submission was rejected because the game date is in the future.
var subject = "WFRA Online Game Keeping Submission";
var message = "Hello! Thank you for submitting to the online game keeping system. \n";
message += "\n Unfortunately,the submission was rejected because this game has not yet occurred:";
message +="\n Game Keeper: " + ogkGameKeeper;
message +="\n Game Date: " + gameDate;
message +="\n Submission Date: " + todayDate;
//message += "\n Administrators can view the submission sheet at " + ogkURL + " \n";
message += "\n Please reply to this email if you experience technical issues. \n";
// Send yourself an email with a link to the document.
GmailApp.sendEmail("wfringette@gmail.com",subject,message,{bcc: "thetroutlakemonster@gmail.com",replyTo: "webmaster@westferrisringette.ca"});
//reject the submission to the sheet
//HERE IS WHERE I WOULD LIKE TO CANCEL THE EVENT TO AVOID DATA INPUT TO THE SPREADSHEET
//exit the code
return; }
提前感谢您的任何建议!
解决方法
根据OP的评论
我的代码在我的Google表单的onFormSubmit中触发,我的目标是防止填充电子表格。非常感谢
如果您将表单设置为将表单响应发送到电子表格,则无法阻止电子表格的填充,但是可以使用表单提交提交触发器来填充电子表格。
方法是在填充电子表格之前设置适当的条件。
顺便说一句,由于无法编辑HTML表单或添加自定义JavaScript,因此无法向Google表单添加e.preventDefault()
之类的东西。
问题中包含的代码包含一个条件,用于比较两个Dates对象,但不能直接比较它们。
代替
if (gameDate < todayDate)
使用
if (gameDate.getTime() < todayDate.getTime())
相关
,示例如何填充onForm使用所需数据提交自己的电子表格
提供脚本绑定到表单的步骤如下:
- 创建自己的目标电子表格
- 按照Ruben的说明修改您的
if
条件以正确比较日期 - 重要提示:如果您要发送电子邮件并避免以后再提交游戏日期表格,则正确的查询应为
if (gameDate.getTime() > todayDate.getTime())
- 添加
else
语句,以实现如果游戏日期已经到来,则将表单数据提交到您的自定义电子表格
样品
function bindMeOnFormSubmitTrigger(e){
//please define
var ogkGameKeeper="";
//sample date
var ogkGameDate = "2020-09-12";
var todayDate = new Date();
var gameDate = new Date(ogkGameDate);
if (gameDate.getTime() > todayDate.getTime()) {
//send an email to admin and user that submission was rejected because the game date is in the future.
var subject = "WFRA Online Game Keeping Submission";
var message = "Hello! Thank you for submitting to the online game keeping system. \n";
message += "\n Unfortunately,the submission was rejected because this game has not yet occurred:";
message +="\n Game Keeper: " + ogkGameKeeper;
message +="\n Game Date: " + gameDate;
message +="\n Submission Date: " + todayDate;
//message += "\n Administrators can view the submission sheet at " + ogkURL + " \n";
message += "\n Please reply to this email if you experience technical issues. \n";
Logger.log("send email");
// Send yourself an email with a link to the document.
GmailApp.sendEmail("wfringette@gmail.com",subject,message,{bcc: "thetroutlakemonster@gmail.com",replyTo: "webmaster@westferrisringette.ca"});
} else{
//paste form data into your own spreadsheet
var formResponse = e.response;
var rowData = [];
var timeStamp = formResponse.getTimestamp();
rowData.push(timeStamp);
var itemResponses = formResponse.getItemResponses();
for (var j = 0; j < itemResponses.length; j++) {
var itemResponse = itemResponses[j];
rowData.push(itemResponse);
}
//append the form submit data to your own custom sheet
var mySheet = SpreadsheetApp.openById("PASTE HERE THE ID OF YOUR CUSTOME SPREADSHEET").getSheetByName("PASTE HERE THE NAME OF THE SHEET").appendRow(rowData);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。