Тип изменения INSERT_ROW выполняется при перемещении строки

#google-apps-script #google-sheets #triggers

#google-apps-script #google-sheets #срабатывает

Вопрос:

У меня есть скрипт приложения Google Sheets, который изменяет ячейку в новой строке при добавлении новой строки. Он работает нормально, но функция также неожиданно запускается при перемещении строки (путем перетаскивания ее вверх или вниз по листу). Похоже, что на ‘INSERT_ROW’ ссылаются, даже если строка только что перемещена. Я бы хотел, чтобы функция выполнялась только в том случае, если явно добавлена новая строка (вставить строку выше / вставить строку ниже). Возможно ли это? Вот что у меня есть до сих пор.

 function myAddRow(e) {
 var sh = SpreadsheetApp.getActiveSheet();
 if(e.changeType === 'INSERT_ROW') {
 var row = sh.getActiveRange().getRow();
 sh.getRange(row, 18).setValue('=HYPERLINK("http://maps.google.com/maps?q="amp;S'   row   ',"Map")');
  }
}
 

Спасибо!

Комментарии:

1. После проверки как строка вставки, так и строка перемещения имеют одинаковое e содержимое объекта события. Следовательно, вы не можете отличить их друг от друга. Возможно, вы просто захотите проверить, имеет ли определенный столбец в строке пустое значение, чтобы определить, какая строка была недавно добавлена или перемещена

2. @RonM Рассмотрите возможность добавления ответа.

3. На самом деле, мое предыдущее предложение может все еще не сработать после проведения дальнейшего тестирования. При перемещении строки вверх строка активного диапазона будет соответствовать строке назначения. Но когда вы перемещаете строку вниз, выбранный активный диапазон является следующей строкой после строки назначения (например, вы перемещаете строку 3 в строку 6, активный диапазон будет в строке 7). Таким образом, по-прежнему будет трудно определить, когда выполнять ваш код.

4. Вы можете рассмотреть возможность использования getMaxRows() для получения количества строк и сохранения «строк до» с PropertiesService помощью для сравнения.