повторяющаяся строка на основе значения ячейки - PullRequest
0 голосов
/ 26 января 2020

Я хочу продублировать строку на основе значения ячейки, а затем удалить значение ячейки (выделено красным), чтобы при повторном запуске скрипт не работал снова на той же строке

Я пробовал скрипт, но у него 2 проблемы

1 - значение ячейки остается таким, что при повторном запуске сценария это приведет к дублированию одной и той же строки снова и снова. 2- удалите формулы, которые я написал, из всего листа

сценария, если вы хотите проверьте, что он все еще существует в приложении https://docs.google.com/spreadsheets/d/1fJc2ymAADaZ4jtEGRAkUkWRape24Un7OE4jYcgcd9FM/edit#gid = 0

1 Ответ

1 голос
/ 26 января 2020

Авто Dupe для одной строки

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

Авто Dupe для нескольких строк

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...