Задать вопрос
@Ivan444

Как программно написать триггер, который будет запускать макрос, при условии редактирования определенной ячейки на определенном листе?

Мне необходимо реализовать , чтобы триггер автоматически запускался при редактировании ячейки "A1" "Sheet1" и также автоматически за собой запускал макрос на добавление строки сверху. Требуется это для того, чтобы при заполнении реестра счетов, счета шли не вниз от старых к новым, а наоборот, новые счета добавлялись сверху, а старые счета уходили вниз.
Вот код моего макроса на добавление строки сверху:

function macro_1() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('2:2').activate();
  spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
  spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
};
  • Вопрос задан
  • 78 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
ProgrammerForever
@ProgrammerForever Куратор тега Google Apps Script
Учитель, автоэлектрик, программист, музыкант
Только я раз 10 этот код скидывал здесь.
/**
 * Возникает при изменении ячейки
* @param {e} event event-объект https://developers.google.com/apps-script/guides/triggers/events?hl=ru
 * [ ProgrammerForever (c) 2020 ]
 * @return Не возвращает значений
 */
function onEdit(event) {
  var sheet = event.source.getActiveSheet();//Текущий лист
  var address = event.range.getA1Notation().toUpperCase();//Адрес ячейки
  var row = event.range.getRow();      //Номер строки
  var col = event.range.getColumn();  //Номер столбца
  var newValue = event.value;            //Новое значение
  var oldValue = event.oldValue;        //Старое значение
  var userEmail = event.user.getEmail();//Пользователь(работает только при вручную назначенном триггере)
  
  if((col===1)&&(row===1)&&(sheet.getName==="Sheet1")){
    // Что-то делаем
  };
};
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы