Google表格脚本 - 批量查找和替换

时间:2018-05-04 08:33:02

标签: google-apps-script google-sheets

我已根据我的需要稍微调整了发布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个值有任何差别。任何人都可以就错误所指的内容提供一些指导吗?

编辑:回应第一条评论,是的,有一个行号会很方便但是没有给出这样的东西。这是消息的屏幕抓取 - enter image description here

...这里是旧项目/新项目的外部参照。由于所有成功的替换都已被删除,因此缩短了清单。

enter image description here

执行记录显示如下 - enter image description here enter image description here

抱歉不提前提供更多数据。

1 个答案:

答案 0 :(得分:0)

事实证明问题不在于脚本。返回的错误实际上是&#34;引用&#34;更改值的工作表中的错误。在该特定列上设置了数据验证以进行检查并尝试防止输入重复值。这是正在返回的错误消息。当我暂停数据验证时,脚本完成且没有错误。