Проблема со скриптом отправки электронной почты в триггере отправки формы - PullRequest
0 голосов
/ 12 декабря 2018

ОБНОВЛЕНИЕ: теперь у меня есть рабочий скрипт ... в основном.Письма отправляются без ошибок, за исключением случаев, когда я добавляю CC: в строку sendEmail.По какой-то причине это поле продолжает отображаться как «неопределенное», когда скрипт вызывает его.Я думаю, что это может быть связано с тем фактом, что для его расчета используется формула, отсюда и функция Utilites.sleep.

Мне действительно нужно вычислить этот адрес электронной почты, потому что он изменитсяна основе формы ответов.

function sendEmails2(e) {
  Utilities.sleep(5000);
  SpreadsheetApp.flush();
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var sheet = ss.getSheetByName('Smoke');
  var dataRange = sheet.getRange(sheet.getLastRow(), 1, 1, 19);
  var data = dataRange.getValues();
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var dispatcherName = e.namedValues["Dispatcher Name"];
    var dateofReport = e.namedValues["Date of Report"];
    var timeofReport = e.namedValues["Time of Report"];
    var descriptionofSmoke = e.namedValues["Description of Fire/Smoke"];
    var location = e.namedValues["Location"];
    var comments = e.namedValues["Comments"];
    var nameofCaller = e.namedValues["Name of Caller/Reporting Party"];
    var callerAgency = e.namedValues["Caller Agency or Organization"];
    var callbackNumber = e.namedValues["Callback Number (if given)"];
    var dispatchCenter = e.namedValues["Dispatch Center(s) Notified"];
    var notificationTime = e.namedValues["Time of Notification"];
    var personNotified = e.namedValues["Name of Person(s) Receiving Notification"];
    var addlNotification = e.namedValues["Additional Notification(s) Made (if applicable)"];
    var addlnotificationTime = e.namedValues["Time of Additional Notification(s)"];
    var emailSent = e.namedValues["EMAIL_SENT"];
    var emailAddress = e.namedValues["Email"];
    var EMAIL_SENT = "EMAIL_SENT";
    var ccAddress = row[16];
    var subject = 'ACTION REQUIRED: SMOKE REPORT';
    var message = 'Dispatcher Name: '+dispatcherName+'\n'+
      'Date of Report: '+dateofReport+'\n'+
      'Time of Report: '+timeofReport +'\n'+'\n'+
      'Description of Fire/Smoke: '+descriptionofSmoke +'\n'+
      'Location: '+location +'\n'+
      'Comments: '+comments +'\n'+'\n'+
      'Name of Caller/Reporting Party: '+nameofCaller +'\n'+
      'Caller Agency or Organization: '+callerAgency +'\n'+
      'Callback Number (if given): '+callbackNumber  +'\n'+'\n'+
      'Dispatch Center(s) Notified: '+dispatchCenter+'\n'+
      'Time of Notification: '+notificationTime+'\n'+
      'Name of Person(s) Receiving Notification: '+personNotified +'\n'+'\n'+
      'Additional Notification(s) Made (if applicable): '+addlNotification+'\n'+
      'Time of Additional Notification(s): '+addlnotificationTime;
      
    if (emailSent != "EMAIL_SENT") { // Prevents sending duplicates
     Utilities.sleep(3000);
      MailApp.sendEmail(emailAddress,subject, message,{cc: ccAddress});
      sheet.getRange(i+1, 19).setValue("EMAIL_SENT");

Я посмотрел и посмотрел здесь и не нашел точного решения.Мой скрипт не будет отправлять электронные письма по триггеру «Отправка формы», но я также не получаю сообщение об ошибке.Я не эксперт в этом, поэтому я уверен, что это простая проблема, которую я просто не вижу.Примечание. В столбцах 16 и 17 на листе содержатся 2 формулы массива, которые необходимо заполнить до запуска сценария.

Заранее спасибо!

https://docs.google.com/spreadsheets/d/1c4pR78gYE8xpWGiWVjX627YNWftViQBHSP1CR6C_2AI/edit?usp=sharing

function OnSubmit(e) {  
  SpreadsheetApp.flush(); 
  var sheet = SpreadsheetApp.openById('1c4pR78gYE8xpWGiWVjX627YNWftViQBHSP1CR6C_2AI').getSheetByName('Smoke Reports');
  var dataRange = sheet.getRange(sheet.getLastRow(), 1, 1, 18);
  var data = dataRange.getValues();
  var EMAIL_SENT = "EMAIL_SENT";
  var startRow = 2
  var row = data[0];
  for (i in data) {
    var rowData = data[i];
    var emailAddress = rowData[15];
    var dispatcherName = rowData[1];
    var dateofReport = rowData[5];
    var timeofReport = rowData[6];
    var descriptionofSmoke = rowData[7];
    var location = rowData[8];
    var comments = rowData[9];
    var nameofCaller = rowData[2];
    var callerAgency = rowData[3];
    var callbackNumber = rowData[4];
    var dispatchCenter = rowData[10];
    var notificationTime = rowData[12];
    var personNotified = rowData[11];
    var addlNotification = rowData[13];
    var addlnotificationTime = rowData[14];
    var emailSent = rowData[17];
    var subject = 'ACTION REQUIRED: SMOKE REPORT';
    var message = 'Dispatcher Name:'+ " " +dispatcherName +"\n"+
      'Date of Report:'+ " "+dateofReport +"\n"+
      'Time of Report:'+ " "+timeofReport +"\n\n"+
      'Description of Fire/Smoke:'+ " "+descriptionofSmoke +"\n"+
      'Location:'+ " "+location +"\n"+
      'Comments:'+ " "+comments +"\n"+"\n"+
      'Name of Caller/Reporting Party:'+ " "+nameofCaller +"\n"+
      'Caller Agency or Organization:'+ " "+callerAgency +"\n"+
      'Callback Number (if given):'+ " "+callbackNumber  +"\n"+"\n"+
      'Dispatch Center(s) Notified:'+ " "+dispatchCenter +"\n"+
      'Time of Notification:'+ " "+notificationTime +"\n"+
      'Name of Person(s) Receiving Notification:'+ " "+personNotified +"\n"+"\n"+
      'Additional Notification(s) Made (if applicable):'+ " "+addlNotification  +"\n"+
      'Time of Additional Notification(s):'+ " "+addlnotificationTime
                  ;
  
    
  if (emailSent != EMAIL_SENT && emailAddress) { // Prevents sending duplicates
  MailApp.sendEmail(emailAddress, subject, message);
  sheet.getRange(startRow + i, 17).setValue(EMAIL_SENT);
 
  }
  }

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