Пользовательский адрес электронной почты на основе значений ячеек в листах Google - PullRequest
0 голосов
/ 14 сентября 2018

Мне нужна помощь при создании потока одобрения запросов в Google Forms / Sheets.

У меня есть лист с ответом на данные, подобный приведенному ниже, заголовки столбцов от A до J - это «Timestamp», «EmailAddress», «Name» ».Targets "" Account # "" Reason "" Access (Days) "" Approver "" Approved "" CaseID "

Я уже настроил триггер отправки формы электронной почты в тело утверждения с помощью addMn formMule, сейчас я хочуинициировать электронную почту, когда тело утверждения одобряет или отклоняет запрос в листе данных.

Каждый раз, когда кто-либо выбирает «Y» или «N» для столбца «I», сценарий должен предполагать, что он будет инициировать электронную почту на основе имеющихся данных.в этом ряду.

Я не эксперт, но пытался сделать это с помощью следующего скрипта и, к сожалению, не получая желаемого результата, я установил для триггера текущего проекта значение OnEdit

 function sendNotification1(e) {
      var ss = SpreadsheetApp.getActiveSpreadsheet();   
      var sheet = ss.getSheetByName("Form Responses 1");

      if(e.range.getColumn() == 9 && e.value == "Y")
      {
        var name = e.range.offset(0,-6).getValue();
        var comment = e.range.offset(0,-3).getValue();
        var email = e.range.offset(0,-7).getValue();
        var case1 = e.range.offset(0,1).getValue();
        var approver1 = e.range.offset(0,-1).getValue(); 
        var subject = "Request has been Approved";
        var body = "Hi " + name + ", your Change Request number " + case1 + " has been approved by " + approver1 + " with following comments: " + "\n\r" + comment;
        MailApp.sendEmail(email, subject, body);

        }

        if(e.range.getColumn() == 9 && e.value == "N")
       {
        var name = e.range.offset(0,-6).getValue();
        var comment = e.range.offset(0,-3).getValue();
        var email = e.range.offset(0,-7).getValue();
        var case1 = e.range.offset(0,1).getValue();
        var approver1 = e.range.offset(0,-1).getValue(); 
        var subject = "Request has been Disapproved";
        var body = "Hi " + name + ", your Change Request number " + case1 + " has been Dis-Approved by " + approver1 + " with following comments: " + "\n\r" + comment;
        MailApp.sendEmail(email, subject, body);

      }   

    }

В журнале StackDriver обнаружена следующая ошибка, но не смог определить, где существует проблема при обращении к адресам ячеек.

2018-09-14 08: 19: 06.336 PKT Координаты или размеры диапазона недопустимы.at sendNotification1 (Код: 6)

Я могу вызвать электронное письмо по любому событию редактирования со следующим кодом, но мне не повезло с условным триггером события редактирования.

function sendNotification1(e) {
  MailApp.sendEmail("myemail@companygmail.com", "Sample subject", "Sample body");
}

При отладке кодаЯ вижу следующую ошибку TypeError: Невозможно прочитать свойство "range" из неопределенного.(строка 6, файл «Код»)

Любая помощь будет высоко оценена

1 Ответ

0 голосов
/ 14 сентября 2018

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

Добавьте в начало функции следующее:

var ss = SpreadsheetApp.getActiveSpreadsheet();   
var sheet = ss.getSheetByName("YOUR SHEET NAME");

И это должно прекрасно работать.

РЕДАКТИРОВАТЬ: Вот электронное письмо, которое я отправил себе, когда проверял.

Imgur

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