Google sheets googlesheets:OnEdit匹配和清除脚本

Google sheets googlesheets:OnEdit匹配和清除脚本,google-sheets,Google Sheets,我希望创建一个“onEdit”函数,如果列L中的单元格值与列a中的单元格不匹配,则该函数将从行中清除单元格(列L到列O) Col A = "ID" Col L = "ID Match" A列到K列是一个导入范围。 L列到O列是一个静态范围。此静态范围有一个OneEdit函数,该函数根据对列L的更改对行进行排序。它与列A同步 我是新来的脚本编辑器,所以如果您有时间帮助的话,非常感谢详细的描述 我很想打开该文档,但它有敏感信息,而且太复杂,无法重新编写。如果我理解正确,您希望跟踪L列中的更改,以便

我希望创建一个“onEdit”函数,如果列L中的单元格值与列a中的单元格不匹配,则该函数将从行中清除单元格(列L到列O)

Col A = "ID"
Col L = "ID Match"
A列到K列是一个导入范围。 L列到O列是一个静态范围。此静态范围有一个OneEdit函数,该函数根据对列L的更改对行进行排序。它与列A同步

我是新来的脚本编辑器,所以如果您有时间帮助的话,非常感谢详细的描述


我很想打开该文档,但它有敏感信息,而且太复杂,无法重新编写。

如果我理解正确,您希望跟踪L列中的更改,以便如果L列中的编辑值与A列中的任何值匹配,则清除
L-O列中的内容

如果是这种情况,您可以执行以下操作:

函数onEdit(e){
var范围=e范围;
var sheet=range.getSheet();
var sheetName=“Sheet1”//要跟踪的工作表的名称。请相应更改
var column=range.getColumn();
var row=range.getRow();
var editedValue=range.getValue();
var colA=sheet.getRange(1,1,sheet.getLastRow()).getValues().map(函数(行){
返回行[0];//获取列A中的值数组
});
//检查编辑的图纸是否为要跟踪的图纸。
//检查编辑的列是否为L
//检查是否在列A中未找到编辑的值
if(sheet.getName()==sheetName&&column==12&&colA.indexOf(editedValue)=-1){
sheet.getRange(“L”+行+”:O“+行).clearContent();
}
}
注:
onEdit
触发器仅由用户的更改触发。由脚本或以任何其他方式导入的数据所做的更改不会触发编辑。如果你想知道这件事,我建议你做一个调查

参考:

我不明白当前的
onEdit
正在做什么:
根据对列L的更改对行进行排序。另外,它与A列同步是什么意思?如果我理解正确,如果L列中的对应值与a列中的对应值不匹配,您希望从行中清除单元格(L-O)?它与
对行排序
与列A同步
有什么关系?我发布了一个答案。我不确定这是否是你想要的,所以请让我知道这是否适合你!我会尽快尝试测试这个。我认为你的评论可能是正确的。你是对的,我想清除单元格(L-O)。我极力避免的是,例如,如果A15中有相应的图形,则删除单元格(L14-O14)。单元格(a-K)按列a排序。单元格(L-O)按列L排序。如果有人删除原始导入范围(即单元格a-K)中的一行,则该行将从图纸数据集中删除。这使得其余的数据不同步。这是一个很好的功能,它的作用非常接近我所需要的。但不完全是我想要的。它当前删除了直接相关的单元格(例如,单元格L14与A14),而不是与行中任何内容相关的单元格(例如,单元格L14与单元格A13匹配,因此不要删除)。我希望在(例如,单元格L14与列a中的任何内容都不匹配)时删除。OnEdit无法按我预期的方式工作。因此,在导入范围的源位置删除行似乎不算编辑。我不确定这是否意味着我的目标根本无法实现,或者是否有办法绕过这一点。为了提供帮助,我在Col P中编写了一个对错公式,`=IFS(COUNTIF($a$3:$a$L3)=1,TRUE,$L3=“”,“”,COUNTIF($a$3:$a,$L3)=0,FALSE,COUNTIF($a$a$a,$L3)>1,“ERROR”)。因此使用这个公式,我只需要一个删除单元格的解决方案(L-P)根据第P栏中的更改(为FALSE):“感谢您的反馈!记录声誉低于15的人所投的票,但不要更改公开显示的帖子分数。”-我已向您投了赞成票,并在解决方案上打了勾。但由于我的水平,它不会显示。再次感谢你所做的一切。