2015-12-29 5 views
0

У меня есть рабочий график в электронной таблице Google, и мне нужно, чтобы он автоматически отправлял каждому человеку по расписанию электронное письмо, если их расписание изменилось. Я создал дополнительный лист для каждого человека, у которого есть только их расписание (это обновление автоматически основано на изменениях в исходном расписании). Как я могу изменить свой сценарий, чтобы он обнаружил изменение на одном из листов (например, лист с именем «Тодд») и отправил ему письмо? Ниже приводится то, что у меня есть до сих пор ...Google Таблицы Сценарии: уведомления по электронной почте при внесении изменений в конкретный лист

Я боролся с этим скриптом в течение нескольких недель, и я не могу найти окончательный ответ нигде, поэтому я отправляю свой собственный вопрос (извините, m довольно неопытный, так что несите со мной).

function sendNotification() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName('Todd'); 
    var range = sheet.getActiveRange().getA1Notation(); 
    var recipients = "[email protected]"; 
    var message = ''; 
    function createSpreadsheetChangeTrigger() { 
    var ss = SpreadsheetApp.getActive(); 
    ScriptApp.newTrigger('onChange') 
     .forSpreadsheet(ss) 
     .onChange() 
     .create(); 
    } 
    var subject = 'Update to Work Schedule'; 
    var body = 'Todd, your schedule has changed. Visit ' + ss.getUrl(); 
    MailApp.sendEmail(recipients, subject, body); 
}; 

ответ

0

В редакторе сценариев вам нужно будет добавить триггер в «Ресурсы -> Триггеры текущего проекта», который запускает свой sendNotification() функцию «по изменению». Вы можете указать дополнительные условия в самом скрипте, используя триггерные функции google:
https://developers.google.com/apps-script/guides/triggers/#onedit

+0

Спасибо за быстрый ответ rsynnest! На самом деле, у меня уже есть триггеры для всех проектов. Проблема в том, что он только отправляет мне сообщения по электронной почте, когда я нажимаю «запустить» в редакторе сценариев, а не когда изменения сделаны в моих листах. Кроме того, причина, по которой я устанавливаю отдельные листы для каждого человека, заключается в том, что при внесении изменений он отправляет по электронной почте только человека, чей график изменился, а не всех. Может ли быть более простой способ сделать это? Может быть, избавиться от отдельных листов, и у вас есть только один лист и назначить диапазон ячеек каждому человеку, и установить мой сценарий для отправки этого человека, если их ячейки меняются? –

+0

Ах, я не заметил триггер вызова API в вашем скрипте. Я скопировал ваш код дословно, и он отлично работает. Возможно, проблема связана с несколькими листами. Что бы я сделал, это использовать один лист с столбцом «email_address». Затем отправьте уведомления по электронной почте на адрес в этом столбце, указав его в своем скрипте. – rsynnest

+0

Он должен работать. Вы уверены, что активировали onChange для sendNotification() в меню запуска проекта ?. Он не будет работать, если вы укажете только триггер в коде функции sendNotification, потому что функция sendNotification никогда не будет вызвана, если она не будет вызвана. – rsynnest