MailApp.sendEmail не работает для нескольких получателей, когда значения выбираются из электронной таблицы - PullRequest
0 голосов
/ 10 мая 2019

У меня есть несколько адресов электронной почты в листе Google, на которые должно быть отправлено письмо.Когда я получаю эти адреса из листа в коде и пытаюсь отправить электронное письмо, я получаю сообщение об ошибке «Неверный адрес электронной почты xyz @ mydomain.com, pqr @ mydomain.com»

Используется ниже функция

        sendEmail(recipient, subject, body, options)

Однако, когда я вручную пишу адреса электронной почты в коде, например,

   var recipients='xyz@mydomain.com,pqr@mydomain.com';
    MailApp.sendEmail(recipients, subject, message, {attachments: 
    [attach]});

Он отлично работает !!

Мой код

 var emailTo = contacts.getRange(1, 1, numRows, 1).getValues();
 MailApp.sendEmail(emailTo, subject, message, {attachments:[attach]});
 //or
 MailApp.sendEmail(emailTo.toString(), subject, message, {attachments: 
 [attach]});

Егоне работает !!!

Я не могу понять, чем отличаются emailTo.toString () и 'xyz @ mydomain.com, pqr @ mydomain.com'.

Используется условие "если" для сравненияэти двое и его возвращение ложное.Когда я печатаю эти два, они выглядят совершенно одинаково.

1 Ответ

0 голосов
/ 13 мая 2019

Просто настройте тестовый лист и скрипт для этого.

Вот мой пример тестового листа:

test sheet

Этоscript:

function stringMail() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getSheetByName('mail-test');

  var range = sh.getDataRange();
  var numRows = range.getValues().length;

  var m1 = 'abc@mydomain.com,def@mydomain.com,ghi@mydomain.com';
  var m2 = sh.getRange(1, 1, numRows, 1).getValues();
  var m3 = m2.toString();

  Logger.log(m1);
  Logger.log(m2);
  Logger.log(m2.toString());
  Logger.log(m3);

  if (m1 == m2.toString()) {
    Logger.log('true');
  }
  if (m1 == m3) {
    Logger.log('also true');
  }
  if (m3 == m2.toString()) {
    Logger.log('still true');
  }
}

Как вы можете видеть, я выполнил некоторые базовые операторы if, чтобы проверить, считаются ли они одинаковыми, если это так, то запишите запись в журнале.

Из вывода журнала:

[19-05-13 09:38:23:178 BST] abc@mydomain.com,def@mydomain.com,ghi@mydomain.com
[19-05-13 09:38:23:179 BST] [[abc@mydomain.com,def@mydomain.com], [ghi@mydomain.com]]
[19-05-13 09:38:23:179 BST] abc@mydomain.com,def@mydomain.com,ghi@mydomain.com
[19-05-13 09:38:23:180 BST] abc@mydomain.com,def@mydomain.com,ghi@mydomain.com
[19-05-13 09:38:23:180 BST] true
[19-05-13 09:38:23:181 BST] also true
[19-05-13 09:38:23:181 BST] still true

Как видите, переменная m1, представляющая собой просто строку адресов электронной почты, считается такой же, как m2, которая является вашим getValues().toString(), используемым в вашем MailApp.sendEmail().Я также определил m3, который был просто m2.toString(), определенный отдельно, чтобы убедиться, что он тоже работает.

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

Пока вы правильно набираете getValues() и затем конвертируете его с помощью toString(), у вас не должно быть никаких проблем с этим.

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