Создание триггера onEdit программно
Альтернативой простым триггерам является устанавливаемые триггеры . Простые триггеры не могут выполнять события, которые требуют разрешения. Устанавливаемые триггеры могут, если пользователь, использующий его, обеспечивает авторизацию.
Поскольку я всегда работаю над кодом других людей, у меня есть пара вспомогательных функций, которые упрощают создание устанавливаемого триггера onEdit.
Это то, что вы иногда увидите в моем коде. Это позволяет мне быстро создавать функции onEdit, в то же время выполняя все домашние дела, которые я хочу, чтобы он выполнял.
function createOnEditTrigger() {
createOnEditTriggerForSpreadsheet('MyFunctionName');
}
Но за сценой есть еще одна вспомогательная функция, которая принимает это имя функции и проверяет, что этому имени функции еще не назначен триггер. Если он есть, он не создаст другого.
function createOnEditTriggerForSpreadsheet(funcname) {
var ssid=SpreadsheetApp.getActive().getId();
if(!isTrigger(funcname)) {
ScriptApp.newTrigger(funcname).forSpreadsheet(ssid).onEdit().create();
}
}
Это функция, которая проверяет все остальные триггеры, чтобы убедиться в отсутствии другого с таким же именем.
function isTrigger(funcName){
var r=false;
if(funcName){
var allTriggers=ScriptApp.getProjectTriggers();
for(var i=0;i<allTriggers.length;i++){
if(funcName==allTriggers[i].getHandlerFunction()){
r=true;
break;
}
}
}
return r;
}
ScriptApp.newTrigger ()
ScriptApp.getProjectTriggers ()
Хотя это действительно удобно для меня. Я по-прежнему рекомендую вам go на панели триггеров и установить немедленные уведомления, чтобы вы могли быстро получить электронное письмо от Google при отладке нового кода. Они сообщат об ошибках немедленно по электронной почте. Это очень удобно.
Анимация: