Вы можете использовать установленный слушатель события изменения для Sheets.
https://developers.google.com/apps-script/guides/triggers/events#change
С помощью можно определить, была ли удалена строка, путем проверки типа изменения REMOVE_ROW
.
Также можно определить, были ли отредактированы одна ячейка или несколько ячеек. См. Код ниже.
При вставке не будут вставлены строки или столбцы, поэтому, если произошел тип изменения «ПРАВКА», можно предположить, что строки или столбцы не были вставлены. Я не знаю ни одного способа ручного редактирования нескольких ячеек одновременно, поэтому, если активный диапазон включает несколько ячеек, это, вероятно, была «вставка».
function nameOfFunction(e) {
var A1Notation,typeOfChange;
//Install this function as a trigger for Sheets change
typeOfChange = e.changeType;//Get the type of change that was made
Logger.log('typeOfChange: ' + typeOfChange)
Logger.log('typeof typeOfChange: ' + typeof typeOfChange)
switch(typeOfChange) {
case 'REMOVE_ROW':
Logger.log('A row was deleted')
break;
case 'EDIT':
A1Notation = SpreadsheetApp.getActiveRange().getA1Notation();
Logger.log('A1Notation: ' + A1Notation)
if (A1Notation.indexOf(":") === -1) {//There is NOT a colon in the A1 notation
Logger.log('An Edit was made to a single cell')
} else {
Logger.log('An Edit was made to MULTIPLE cells')
}
break;
case 'OTHER':
/* This is NOT an edit of types
EDIT, INSERT_ROW, INSERT_COLUMN, REMOVE_ROW, REMOVE_COLUMN, INSERT_GRID, REMOVE_GRID, FORMAT
*/
Logger.log('This is NOT an edit or a row Deletion')
break;
default:
}
}