На листе Google у меня есть событие, которое удаляет строку, если выполняются определенные условия.
Но иногда оно удаляет две строки.
На каждом исключении OnEdit я проверяю, если этоправый лист, правый столбец и ожидаемое значение для продолжения.
Глядя на журналы, он запускается только один раз.
/** @OnlyCurrentDoc */
function onEdit(e)
{
Logger.log("TESTING TESTING ON EDIT");
if(SpreadsheetApp.getActiveSpreadsheet().getSheetName() == "Student Info")
{
Logger.log("Enter Student Info");
//Obtenemos donde se ha realizado el cambio
var range = e.range;
//var targetSheet = app.getActiveSpreadsheet.getSheetByName("Archive");
//targetSheet.appendRow();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = e.source.getActiveSheet();
var r = e.source.getActiveRange();
if(s.getName() == "Student Info" && r.getColumn() == 8 && r.getValue() == 'Archive') {
var id= s.getRange(r.getRow(),1).getValue();
r.setValue('');
Logger.log("Get ID");
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Archive");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
Logger.log("Prior to delete ROW in student info");
Logger.log(row);
s.deleteRow(row);
Logger.log("After Deleting ROW in student info");
//Student Tracker
var st=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Student Tracker")
for (i=6;i<=st.getLastRow();i++)
{
if (st.getRange(i, 1).getValue()==id)
{
Logger.log("Prior Deleting ROW in student tracker");
st.deleteRow(i);
Logger.log("After Deleting ROW in student tracker");
break;
}
}
//
//SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Upwork Request").getRange(range.getRow(),7).setValue(id);
} else
{Logger.log("Not Student Info Or Archive");}
// SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Upwork Request").getRange(range.getRow(),8).setValue(new Date());
} else
{ Logger.log("No Student Info");}
}
Нет сообщений об ошибках, просто иногда удаляются две строки.
РЕДАКТИРОВАНИЕ:
Я просто замечаю в журнале событий, что он не только запускается дважды, но и не заканчивается, я добавил журнал после перерыва, который никогда не нажимается
РЕДАКТИРОВАТЬ2 После того, как пользователь исправил оператор, он все еще работает дважды.