我已根据我的需要稍微调整了发布here的脚本。它在大多数情况下都能很好地搜索超过4500条记录的列表,并根据187条交叉引用列表进行替换。
function replMyText(){
var ss=SpreadsheetApp.getActive();
var sh1=ss.getSheetByName('summary');
var sh2=ss.getSheetByName('Dashboard');
var rgtxt=sh1.getRange('A7:A4934');//text to replace
var rgrep=sh2.getRange('K2:L188');//replacement table
var txtA=rgtxt.getValues();
var repA=rgrep.getValues();
for(var i=0;i<txtA.length;i++){
for(var j=0;j<repA.length;j++){
if(txtA[i][0]==repA[j][0]){
txtA[i][0]=repA[j][1];
}
}
}
rgtxt.setValues(txtA);
}
但是有17件物品没有被替换。我在脚本页面上看到的错误是“项已存在”。与已经替换的那些相比,我看不出这17个值有任何差别。任何人都可以就错误所指的内容提供一些指导吗?
编辑:回应第一条评论,是的,有一个行号会很方便但是没有给出这样的东西。这是消息的屏幕抓取 -
...这里是旧项目/新项目的外部参照。由于所有成功的替换都已被删除,因此缩短了清单。
抱歉不提前提供更多数据。
答案 0 :(得分:0)
事实证明问题不在于脚本。返回的错误实际上是&#34;引用&#34;更改值的工作表中的错误。在该特定列上设置了数据验证以进行检查并尝试防止输入重复值。这是正在返回的错误消息。当我暂停数据验证时,脚本完成且没有错误。