取消选中复选框并重新选中时运行脚本



目前我有一个脚本,当用户在Google Sheets中选中复选框时,该脚本会在相邻的两列中输入当前日期和时间以及电子邮件。如果复选框未选中并重新选中,我希望能够添加其他电子邮件,但我迷失了方向,不确定该朝哪个方向完成。这就是我的工作表目前的样子:1。理想情况下,当复选框被取消选中时,我不希望发生任何事情,当它被重新检查时,我希望用户的电子邮件添加到下一个电子邮件列中。所有用户都在同一个谷歌工作区域中,所以希望记录电子邮件不会成为问题。我最初的想法是,我必须添加一个额外的复选框来完成这项工作,但我想看看是否有其他方法。我该怎么做?

这就是我的代码:

function onEdit(e) {
var email = Session.getActiveUser().getEmail();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName("Form Responses 1");
const range = e.range;
range.setNote(email + new Date());
if(sh.getName() == "Form Responses 1", range.columnStart == 13 && e.value == "TRUE") {
e.range.offset(0,1,1,2).setValues([[new Date(),email]]);
}
else if(sh.getName() == "Form Responses 1", range.columnStart == 13 && e.value == "FALSE") {
e.range.offset(0,1,1,3).setValues([[email]]);
}
}

感谢您的任何建议或帮助

我知道您有一个复选框,当用户取消选中然后选中该复选框时,您会希望添加其他操作。如果我对这个问题的理解是准确的,那么你可以通过使用简单的布尔逻辑来快速达到你的目标。

您只需要添加一个布尔标志,当用户取消选中复选框时就会触发该标志,我们称之为uncheck。然后,您可以添加一个名为recheck的布尔标志,该标志在复选框被激活时激活,但前提是它以前已被停用。最后,您可以使用这两个布尔值来引入您的附加操作。请参阅下面的示例,如果您需要进一步的解释,请告诉我。

function onEdit(e) {
var email = Session.getActiveUser().getEmail();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName("Form Responses 1");
var uncheck = false;
var recheck = false;
const range = e.range;
range.setNote(email + new Date());
if (sh.getName() == "Form Responses 1", range.columnStart == 13 && e.value ==
"TRUE") {
e.range.offset(0, 1, 1, 2).setValues([
[new Date(), email]
]);
if (uncheck == true) {
recheck = true;
}
} else if (sh.getName() == "Form Responses 1", range.columnStart == 13 && e
.value == "FALSE") {
uncheck = true;
e.range.offset(0, 1, 1, 3).setValues([
[email]
]);
}
if (uncheck && recheck) {
// Additional operations
}
}

最新更新