Пропуск пустых писем в Google Apps Script Mail Merge

Я использую это руководство по простому слиянию писем, чтобы помочь мне создать рассылка для отправки учащимся и их родителям сводки о отработанных часах общественных работ. Их адреса электронной почты находятся в документе Google Таблиц. Скрипт работает до тех пор, пока не попадет в пустую ячейку. Затем я получаю сообщение об ошибке «Invalid email: undefined» со ссылкой на строку в скрипте с командой send email.

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

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

function sendEmails() {


var ss = SpreadsheetApp.getActiveSpreadsheet();
  var dataSheet = ss.getSheets()[0];
  var dataRange = dataSheet.getRange(5, 1, dataSheet.getMaxRows() - 1, 7);

  var templateSheet = ss.getSheets()[1];
  var emailTemplate = templateSheet.getRange("B7").getValue();

  // Create one JavaScript object per row of data.
  objects = getRowsData(dataSheet, dataRange);

  // For every row object, create a personalized email from a template and send
  // it to the appropriate person.
  for (var i = 0; i < objects.length; ++i) {
    // Get a row object
    var rowData = objects[i];

// Generate a personalized email.
// Given a template string, replace markers (for instance ${"First Name"}) with
// the corresponding value in a row object (for instance rowData.firstName).
var emailText = fillInTemplateFromObject(emailTemplate, rowData);
var emailSubject = templateSheet.getRange("B6").getValue();

MailApp.sendEmail(rowData.studentEmail, emailSubject, emailText);
MailApp.sendEmail(rowData.parentaEmail, emailSubject, emailText);
MailApp.sendEmail(rowData.parentbEmail, emailSubject, emailText);
  } 

Что мне нужно добавить, чтобы пропускать пустые ячейки в столбцах parentaEmail и parentbEmail?


person DGT    schedule 25.05.2014    source источник


Ответы (2)


Есть несколько способов решить вашу проблему, но в целом вам просто нужен условный оператор, который говорит: «Если ячейка не пуста, выполните функцию sendMail».

if (rowData.parentaEmail != '') {
  MailApp.sendEmail(rowData.parentaEmail, emailSubject, emailText);
}
person rGil    schedule 25.05.2014

Хорошо, теперь у меня все работает. Спасибо rGil за то, что указал мне правильный путь. Вот что в итоге сработало:

   if (rowData.parentaEmail != null) {
      MailApp.sendEmail(rowData.parentaEmail, emailSubject, emailText);
   }

а затем сделайте то же самое еще раз, но для parentbEmail

person DGT    schedule 28.05.2014