Javascript 选中复选框时复制值,并在编辑后禁用旧编辑的单元格
当用户选中单元格A2中的复选框时,将行的单元格C2值复制到目标图纸单元格D7。如果用户选中框A3,则应将C3复制到目标图纸单元格D7,并将C3复制到A列中除标题外的每个单元格 如果我已经勾选了A2的复选框并复制了C2的详细信息,这意味着A2不应该再被点击。但所有其他如A3 A4等仍然能够覆盖D7值。但在A3被选中后,脚本不应该在A2中工作 以下是源代码表: 和目标页: 说明: 你有两个目标:Javascript 选中复选框时复制值,并在编辑后禁用旧编辑的单元格,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,当用户选中单元格A2中的复选框时,将行的单元格C2值复制到目标图纸单元格D7。如果用户选中框A3,则应将C3复制到目标图纸单元格D7,并将C3复制到A列中除标题外的每个单元格 如果我已经勾选了A2的复选框并复制了C2的详细信息,这意味着A2不应该再被点击。但所有其他如A3 A4等仍然能够覆盖D7值。但在A3被选中后,脚本不应该在A2中工作 以下是源代码表: 和目标页: 说明: 你有两个目标: 您希望能够将数据从源工作表的列A复制到单元格D7 基本上,您需要获取活动行和列C的值,并将其设置为单
targetSheet.getRange('D7').setValue(as.getRange(arow,3).getValue());
onEdit
触发器希望将数据复制到单元格D7。对于这个特定场景,您需要利用这个类。您将存储过去编辑过的单元格,因此,如果新编辑的单元格是此列表的一部分,请不要复制数据,否则请将其复制到单元格D7function onEdit(e) {
const ss = e.source;
const as = ss.getActiveSheet();
const ar = e.range;
const arow = ar.getRow();
const acol = ar.getColumn();
if (ar.getValue() == true && as.getName() == "get" && acol == 1 && arow > 1){
console.log("mpika")
const ncell = ar.getA1Notation();
const check = getHistory(ncell);
console.log(check)
if(check) {
const targetSheet = ss.getSheetByName("target");
targetSheet.getRange('D7').setValue(as.getRange(arow,3).getValue());
}
}
}
function getHistory(ncell) {
const cprop = PropertiesService.getDocumentProperties().getProperty("edited_cells")
if(cprop){
if(cprop.includes(ncell)){
return false;
}
else{
PropertiesService.getDocumentProperties().setProperty("edited_cells",`${cprop},${ncell}`)
return true;
}
}
else{
PropertiesService.getDocumentProperties().setProperty("edited_cells",ncell);
return true;
}
}
A5,甚至是A6等新条目。实际上,整个列A接受A1,这是一个标题,但现在的问题是,如果我点击,比如说A4,它将C4复制到目标,A5也一样,但是如果再次转到A4,取消选中,再次选中,它将再次复制C4值。这里需要的是在A4启动后禁用它checked@AliAhmed因此,在
D7
获得一个值之后,您基本上想要禁用脚本,对吗?对复选框进行任何编辑都会使D7中的值保持相同的正确性?不,不是这样。我想要的是。如果我已经勾选了A2的复选框并复制了C2的详细信息,这意味着A2不应该再被点击。但所有其他如A3 A4等仍然能够覆盖D7值。但在A3被删除后,脚本不应该在A2中工作checked@AliAhmed您不应该手动运行onEdit
功能。它是一个触发函数,在用户编辑时自动执行。想想看。如果必须手动执行触发器函数,那么它的用途是什么。触发器函数的唯一目的是由用户或时间事件执行,因此您不必自己运行它。请阅读官方文档中的触发器:.@AliAhmed,如果您有更多问题,请避免在评论部分提问。stackoverflow不允许后续问题。想想看,我们在这里为未来的读者创建一个在线存储库。未来的读者不会从评论部分获益。没有人读这里的评论。如果你不能将问题作为一个单独的帖子与你的问题联系起来,就发布一个新问题。