脚本以清除未选中复选框中的注释



我不是程序员,但喜欢时不时地玩脚本作为一种爱好。

我构建了一个电子表格,通过拼凑来自各种来源的代码,在每次选中复选框时捕获"注释"中的时间戳。但是,当未选中复选框时,我无法清除复选框中的注释。

代码示例

function onEdit(e) {
if(e.value != "TRUE") return;
e.source.getActiveSheet().getRange(e.range.rowStart,e.range.columnStart).setNote('Completed: ' + Utilities.formatDate(new Date(), SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "dd-MM-yy HH:mm:ss"));
}

旁注:这可以通过注释而不是注释来实现吗?

试试这个:

function onEdit(e) {
if(e.range.getSheet().getName()!='Sheet1')return;//Limits action to one sheet
//e.source.toast('flag1');
if(e.range.columnStart==1 && e.value == "TRUE") {//I have the checkboxes in columnA
//e.source.toast('flag2');
e.range.setNote('Completed: ' + Utilities.formatDate(new Date(), SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "dd-MM-yy HH:mm:ss"));//sets note to completed
}
if(e.range.columnStart==1 && e.value == "FALSE") {
//e.source.toast('flag3');
e.range.setNote('');//Clears note
}
}

在您的情况下,这可能是您想要的。

function onEdit(e) {
if(e.value == "TRUE") {
e.range.setNote('Completed: ' + Utilities.formatDate(new Date(), SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "dd-MM-yy HH:mm:ss"));
}
if(e.value == "FALSE") {
e.range.setNote('');
}
}

试试这个:

function onEdit(e) {
if(e.value == "FALSE"){ 
e.range.clearNote();
return;
}
e.range.setNote('Completed: ' + Utilities.formatDate(new Date(), SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "dd-MM-yy HH:mm:ss"));
}

您的代码是正确的,您只需要删除if语句中的注释,如果值"FALSE",我使用clearNote()(此处的文档(删除它们 取消选中该框后,注释本身可能仍然可见一秒钟,但它会消失并从单元格中删除。

最新更新