Как переместить строки ответа формы между листами в зависимости от состояния строки? - PullRequest
0 голосов
/ 04 ноября 2019

Я перемещаю строки между листами в зависимости от состояния строки. Код отлично работает с данными, которые были введены вручную, однако он не будет работать с ответами формы, и я не понимаю, почему. Я включаю ссылку на СС и код ниже.

https://docs.google.com/spreadsheets/d/1TOj72oc3Lboku0IvhsgHFi0utKG8rIZqT7IFlsKion4/edit?usp=sharing

https://forms.gle/rHbpG1hRdTn5TdSD6

Любой совет или помощь будет принята с благодарностью.

function onEdit(e) {//"e" receives the event object
  var range = e.range;//The range of cells edited

  var columnOfCellEdited = range.getColumn();//Get column number

  if (columnOfCellEdited === 6) {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = e.source.getActiveSheet();
  var r = e.source.getActiveRange();
  var C = 6 // column A=1, B=2, C=3, etc.
  var V1 = "Open" //Variable #1 user defined
  var V2 = "Review"
  var V3 = "Invoiced"
  var TS1= "Open"    //target sheet 1 name
  var TS2= "Review"  //target sheet 2 name
  var TS3= "Invoiced"    //target sheet 3 name
  var SS1 = "Test Work order Tracker"




  if(ss.getName() == SS1 && r.getColumn() == C && r.getValue() == V3 ) {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName(TS3);
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
  else if(ss.getName() == SS1 && r.getColumn() == C && r.getValue() == V2 ){
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName(TS2);
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
   else{
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName(TS1);
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
}
}

Я не получаю сообщение об ошибке. Сценарий, кажется, запускается, просто не работает. Например, на листе «Просмотр» или «Счет-фактура» я могу изменить столбец F на «Просмотр» или «Счет-фактура», и он переместит всю строку на соответствующий лист. Если строка F изменяется на что-либо, кроме «Просмотр» или «Счета-фактуры», он перемещается на открытый лист. Это работает, если в строку введены данные вручную. Если строка является ответом формы, она не перемещается. Это большая проблема, потому что не должно быть никаких ответов, введенных вручную, все они будут проходить через форму.

...