Как заставить каждую функцию запускаться на определенной странице? - PullRequest
0 голосов
/ 01 июля 2019

У меня есть две функции с одинаковым именем "myFunction". Я запускаю его с помощью Google Trigger при редактировании, и у меня есть два листа, как указать каждый для каждого листа, который я использую, но он не работает

 var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Copy of Timesheet & Feedback");

//and on the other function


  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Visits");

1 Ответ

1 голос
/ 01 июля 2019

Проблема:

getSheetByName() вернет искомый лист, но не имеет никакого отношения к редактируемому листу для запуска вашей функции.


Решение:

Вместо этого вы можете использовать объекты событий для этой цели.Оберните весь сценарий внутри оператора if, проверяющего имя листа.Новая функция должна выглядеть примерно так:

function myFunction(event) {
  var ss = event.range.getSheet();
  if (ss.getName() === "Copy of Timesheet & Feedback") {
    //your code here
  }
}

Таким образом, код не будет продолжаться, если не найдет ожидаемый лист (имя листа внутри оператора if).


Примечания:

Обратите внимание на имя функции myFunction(event), "(событие)" важно, чтобы мы могли получить доступ к объекту события, чтобы получить редактируемую электронную таблицу.

Вы не сможете запустить скрипт вручную, установите триггер для «on Edit», и он просто запустится автоматически.


Ссылки:

  1. Объекты событий
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...