Google Sheets Move Row Multiple Criteria - PullRequest
0 голосов
/ 13 июля 2020

В настоящее время у меня есть рабочая функция, которая берет строку с одного листа (Активные заказы) и перемещает ее на другой (Требуется ввод), когда столбец помечен как ИСТИНА. Вот этот код:

function moverow(event) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();  
  if(s.getName() == "Active Orders" && r.getColumn() == 23 && r.getValue() == 1) 
   {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Needs Entered");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
}

Прямо сейчас, если столбец 23 помечен как ИСТИНА, строка переместится на лист «Требуется ввод». Я бы хотел, чтобы это было немного умнее, и если столбец 23 помечен как ИСТИНА И столбец 19 = «Отменено», тогда строка перемещается на лист «Отменено», иначе код продолжает работать как обычно, чтобы переместить строку в «Требуется ввод». простынь. Я не уверен, как изменить мой текущий оператор IF, чтобы проверить несколько критериев, а затем как добавить оператор else, чтобы продолжить код в обычном режиме, если новый оператор IF не выполняется.

обойти все это еще раз, попробовал несколько вещей, которые, как я думал, сработают, но в итоге все сломалось.

1 Ответ

1 голос
/ 13 июля 2020

Попробуйте следующее:

function moverow(e) {
  const sh=r.range.getSheet();
  if(sh.getName()=="Active Orders") {
    if(sh.getRange(e.range.rowStart,23).getValue()=='TRUE' && sh.getRange(e.range.rowStart,19)!='Canceled') {
      let tsh=e.source.getSheetByName('NeedsEntered');
      let vs=sh.getRange(e.range.rowStart,1,1,sh.getLastColumn()).getValues();
      tsh.getRange(tsh.getLastRow()+1,1,1,vs[0].length).setValues(vs);
      sh.deleteRow(e.range.rowStart);
    }
    if(sh.getRange(e.range.rowStart,23).getValue()=='TRUE' && sh.getRange(e.range.rowStart,19)=='Canceled') {
      let tsh=e.source.getSheetByName('Canceled');
      let vs=sh.getRange(e.range.rowStart,1,1,sh.getLastColumn()).getValues();
      tsh.getRange(tsh.getLastRow()+1,1,1,vs[0].length).setValues(vs);
      sh.deleteRow(e.range.rowStart);
    }
  }
}
...