Я перемещаю строки между листами в зависимости от состояния строки. Код отлично работает с данными, которые были введены вручную, однако он не будет работать с ответами формы, и я не понимаю, почему. Я включаю ссылку на СС и код ниже.
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 изменяется на что-либо, кроме «Просмотр» или «Счета-фактуры», он перемещается на открытый лист. Это работает, если в строку введены данные вручную. Если строка является ответом формы, она не перемещается. Это большая проблема, потому что не должно быть никаких ответов, введенных вручную, все они будут проходить через форму.