OnEdit & Last Row - PullRequest
       68

OnEdit & Last Row

0 голосов
/ 06 апреля 2020

Я использую onEdit для отправки строки данных на другую вкладку. Прямо сейчас, это заполняет первый полностью пустой ряд. Можно ли заполнить эти данные строкой, в которой определенные столбцы уже содержат информацию?

Например: данные из onEdit будут заполнены в столбцы A: K, хотя в этой же строке в столбце уже есть информация L?

Таким образом, вместо того, чтобы заполнять первую полностью пустую строку, onEdit заполняет данные первой строкой, где столбцы A: K пустые, без учета других столбцов.

function onEdit(e) {
  //e.source.toast('Entry' + JSON.stringify(e));
  var sh=e.range.getSheet();
  //master
  if(sh.getName() == "Master1" && e.value=="TRUE") {
    if(e.range.columnStart==13) {
      //e.source.toast('Flag1');
      var tsh=e.source.getSheetByName("Export1");
      var trg=tsh.getRange(tsh.getLastRow()+1,1);
    }
    if(e.range.columnStart==14) {
      //e.source.toast('Flag2');
      var tsh=e.source.getSheetByName("Export2");
      var trg=tsh.getRange(tsh.getLastRow()+1,1);
    }
    sh.getRange(e.range.rowStart,1,1,sh.getLastColumn()).copyTo(trg);
  }
  //master2
  if(sh.getName()=="Master2" && e.value=="TRUE") {
    if(e.range.columnStart==9) {
      //e.source.toast('Flag1');
      var tsh=e.source.getSheetByName("Export3");
      var trg=tsh.getRange(tsh.getLastRow()+1,1); 
    }
    sh.getRange(e.range.rowStart,1,1,sh.getLastColumn()).copyTo(trg)
  }
}

1 Ответ

1 голос
/ 06 апреля 2020
function onEdit(e) {
  //e.source.toast('Entry' + JSON.stringify(e));
  var sh=e.range.getSheet();
  //master
  if(sh.getName()=="Master1" && e.value=="TRUE") {
    if(e.range.columnStart==13) {
      //e.source.toast('Flag1');
      var vs=sh.getRange(e.range.rowStart,1,1,11).getValues()
      var tsh=e.source.getSheetByName("Export1");
      tsh.getRange(getColumnHeight(11,tsh,e.source)+1,1,1,11).setValues(vs);
    }
    if(e.range.columnStart==14) {
      //e.source.toast('Flag2');
      var vs=sh.getRange(e.range.rowStart,1,1,11).getValues()
      var tsh=e.source.getSheetByName("Export2");
      tsh.getRange(getColumnHeight(11,tsh,e.source)+1,1,1,11).setValues(vs);
    }

  }
  //master2
  if(sh.getName()=="Master2" && e.value=="TRUE") {
    if(e.range.columnStart==9) {
      //e.source.toast('Flag1');
      var vs=sh.getRange(e.range.rowStart,1,1,8).getValues()
      var tsh=e.source.getSheetByName("Export3");
      tsh.getRange(getColumnHeight(8,tsh,e.source)+1,1,1,8).setValues(vs);
    }
  }
}

function getColumnHeight(col,sh,ss){
  var ss=ss||SpreadsheetApp.getActive();
  var sh=sh||ss.getActiveSheet();
  var col=col||sh.getActiveCell().getColumn();
  var v=sh.getRange(1,col,sh.getLastRow(),1).getValues().map(function(r){return r[0];});
  var s=0;
  var h=0;
  v.forEach(function(e,i){if(e==''){s++;}else{s=0;}h++;});
  return (h-s);
}
...