基于单元格值的重复行

时间:2020-01-26 16:50:10

标签: google-apps-script

我想根据单元格值复制行,然后删除单元格值(红色),以便在重新运行脚本时不会再次在同一行上工作

我尝试过脚本,但是有2个问题

1-保留单元格值,因此当重新运行脚本时,它将导致一次又一次重复同一行 2-从整个工作表中删除我写的公式

脚本(如果要检查它是否仍然存在) https://docs.google.com/spreadsheets/d/1fJc2ymAADaZ4jtEGRAkUkWRape24Un7OE4jYcgcd9FM/edit#gid=0

1 个答案:

答案 0 :(得分:1)

单行自动复制

function AutoDuplicate() {
  var ss=SpreadsheetApp.getActive()
  var sh=ss.getActiveSheet();
  var rg=sh.getDataRange();
  var vA=rg.getDisplayValues();
  var bA=rg.getBackgrounds();
  var v=[];
  var b=[]
  for(var i=0;i<vA.length;i++){
    var t1=bA[i][7];
    var t2=vA[i][7];
    if(bA[i][7]=='#ff0000' && !isNaN(vA[i][7]) && Number(vA[i][7])>0) {
      bA[i][7]='#ffffff';
      for(var j=0;j<vA[i][7];j++) {
        v.push(vA[i]);
      }
      b.push(bA[i]);
      sh.getRange(1,1,v.length,v[0].length).setValues(v);
      sh.getRange(1,1,b.length,b[0].length).setBackgrounds(b);
    }
  }
}    

动画:

enter image description here

自动复制多行

function autoDupeForMultipleRows() {
  var ss=SpreadsheetApp.getActive()
  var sh=ss.getActiveSheet();
  var rg=sh.getDataRange();
  var vA=rg.getDisplayValues();
  var bA=rg.getBackgrounds();
  var v=[];
  var b=[];
  var a=0;
  for(var i=0;i<vA.length;i++){
    if(bA[i][7]=='#ff0000' && !isNaN(vA[i][7]) && Number(vA[i][7])>0) {
      bA[i][7]='#ffffff';
      for(var j=0;j<=vA[i][7];j++) {
        v.push(vA[i]);
        b.push(bA[i]);
      }
    }
  }
  sh.clearContents();
  var org=sh.getRange(1,1,v.length,v[0].length).setValues(v);
  org.setBackgrounds(b);
}

动画:

enter image description here