Google表格阻止脚本“删除重复行”将所有公式转换为值,并仅删除col A:A中的重复项

时间:2019-11-21 15:24:52

标签: google-apps-script google-sheets

如标题中所述,我必须停止此脚本 从将所有公式转换为值并仅删除A列的重复行:A

  function removeDuplicates() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var newData = new Array();
  if (actualSheetName == "Feuille 1" )  { 
    if (e.range.getColumn() == 1){
  for(i in data){
    var row = data[i];
    var duplicate = false;
    for(j in newData){
      if(row[0] == newData[j][0]){
        duplicate = true;
      }
    }
    if(!duplicate){
      newData.push(row);
    }
  }
  sheet.clearContents();
  sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
}}}

2 个答案:

答案 0 :(得分:1)

在我看来,您正在尝试使它成为onEdit()函数,因此它是:

要使此功能正常工作,必须编辑column1中的单元格。 (即您实际上必须更改第一列中的一个单元格)

function onEdit(e) {
  var sheet=e.range.getSheet();
  //e.source.toast('flag1');
  var data=sheet.getDataRange().getValues();
  var newData = [];
  var d=0;
  if (sheet.getName()=="Sheet1") { 
    //e.source.toast('flag2');
    if (e.range.columnStart ==1) {
      for(var i=0;i<data.length;i++) {
        if(newData.indexOf(data[i][0])==-1) {
          newData.push(data[i][0]);
        }else{
          sheet.deleteRow(i+1-d++);
        } 
      }
    }
  }
}
  

注意:您不能通过从脚本编辑器运行该脚本来以正常方式测试该脚本。您必须提供一个事件对象。我通常只是通过编辑适当的页面以生成onEdit()触发器来调试它。

这不会删除空白行:

function onEdit(e) {
  var sheet=e.range.getSheet();
  //e.source.toast('flag1');
  var data=sheet.getDataRange().getValues();
  var newData = [];
  var d=0;
  if (sheet.getName()=="Sheet1") { 
    //e.source.toast('flag2');
    if (e.range.columnStart ==1) {
      for(var i=0;i<data.length;i++) {
        if(data[i][0]=='')continue;
        if(newData.indexOf(data[i][0])==-1) {
          newData.push(data[i][0]);
        }else{
          sheet.deleteRow(i+1-d++);
        } 
      }
    }
  }
}

答案 1 :(得分:0)

工作代码在这里^ _ ^ B4的公式是char operator[](ptrdiff_t pos) const { return m_str[pos]; } char& operator[](ptrdiff_t pos) { return m_str[pos]; } 如果您删除一行或插入新行,它将在此处给出B4的值,即A:A列的最大数量+ 1,并删除A:A中重复的空行

=max(A:A)+1