Ограничение триггера onEdit изменениями, внесенными в определенную ячейку в определенном листе - PullRequest
0 голосов
/ 05 июля 2019

Мне нужны какие-либо правки / изменения в определенной ячейке на определенном листе (вкладке) для создания триггера onEdit.

Я искал и пробовал десятки потенциальных решений, но, похоже, ни одно из них не помогло.

Моя конкретная ячейка «редактирования» - это «H8», и она расположена на листе (вкладке) под названием «Земля»

И только для этого примера я хочу, чтобы триггер удалил содержимое ячейки «А1» на листе: «тест»

Попытка № 1: На основе этой ссылки: https://stackoverflow.com/a/48964929/11317736

function onEdit(e) { 
  if (e.range.getA1Notation() === 'Land!H8') {
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('test').getRange('A1').clear();
  }
}

КОД ОШИБКИ: TypeError: Невозможно прочитать свойство "source" из неопределенного. (строка 2, файл "Код") Уволить

Попытка № 2: На основе множества различных сообщений

function onEdit(e) {
      var range = e.range;
      var rangeEdit = e.range.getA1Notation();
      if(rangeEdit == "Land!H8"){
        SpreadsheetApp.getActiveSpreadsheet().getSheetByName('test').getRange('A1').clear();
          }
    }

КОД ОШИБКИ: TypeError: Невозможно прочитать свойство "range" из неопределенного.

Любая помощь будет принята с благодарностью

1 Ответ

2 голосов
/ 05 июля 2019

Попробуйте это:

function onEdit(e) {
  var sh=e.range.getSheet();
  if(e.range.columnStart==8 && e.range.rowStart==8 && sh.getName()=="Land") {
    //put your code here
    e.source.toast('You enter a new value of ' + e.value);//remove this line
  }else{
    return;
  }
}

Обратите внимание, что эту функцию нельзя запустить из редактора сценариев без создания собственного объекта события. Альтернативный вариант - скопировать его в редактор сценариев и отредактировать ячейку H8 листа с именем «Land», чтобы увидеть, работает ли он для вас. Примечание: редактирование требует, чтобы вы действительно изменили значение H8.

Я уже проверил это, и оно работает. Полагаю, я должен упомянуть, что просто добавление e в onEdit (e) не создает объект события.

Прямо со страницы документации диапазона:

  • clear () Очищает диапазон содержимого, форматы и правила проверки данных.
  • clear (options) Очищает диапазон содержимого, формат, правила проверки данных и / или комментарии, как указано в данных расширенных параметрах.
  • clearContent () Очищает содержимое диапазона, оставляя форматирование без изменений.
  • clearDataValidations () Очищает правила проверки данных для Диапазон. * * тысяча двадцать-одна
  • clearFormat () Очищает форматирование для этого диапазона.
  • clearNote () Очищает заметку в данной ячейке или ячейках.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...