Как отправить электронное письмо HTML с вложением с помощью MailApp в Google Apps Script? - PullRequest
0 голосов
/ 29 мая 2020

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

    MailApp.sendEmail(
    emailid[i], 
    "test email",
    Message,
    htmlBody: HtmlMessage,
    attachments: [file.getAs(MimeType.PDF)]
    );

Ошибка связана со ссылкой на htmlBody: HtmlMessage: SyntaxError: missing) после списка аргументов (строка 48, файл "Code.gs")

Я пробовал другие методы в Интернете, включая

    MailApp.sendEmail({
    to: emailid[i],
    subject: "This is a test email",
    htmlBody: HtmlMessage,
    attachments: [file.getAs(MimeType.PDF)]  
  });

Я получаю сообщение об ошибке: Исключение: неверный адрес электронной почты: [L java .lang. Object;@1456304b (строка 51, файл «Код»)

Весь Код:

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();

  //BASIC DETAILS
  var name = sheet.getRange(1, 1, 3).getValues();
  var emailid = sheet.getRange(1, 2, 3).getValues();
  var company = sheet.getRange(1, 3, 3).getValues();

  //ATTACHMENTS
  var file = DriveApp.getFileById('XXXXXXXXXXXXXXXXX').getAs('application/pdf').setName('XXXX.pdf');

  //HTML
  var HtmlOutput = HtmlService.createHtmlOutputFromFile('html');
  var HtmlMessage = HtmlOutput.getContent();

  //PLAIN TEXT
  var Message = 
    "Dear <?= name ?>,"+"\n"+
    "XXXXXXXXXXXXXxXXXX"+"\n"+
    "XXXXXXXXXXXX <?= company ?> XXXXXXXXXXXXXXXXXXX"+"\n"+
    "XXXX Link: https://www.XXXX/XXXX"+"\n"+
    "XXXX."+"\n"+
    "With Warm Regards,"+"\n"+
    "XXX"+"\n"+
    "Call: XXXXX"+"\n"+
    "Email: XXXX"+"\n";
  var OriginalMessage = Message;
  var OriginalHtmlMessage = HtmlMessage;

  for( var i = 0 ; i <= 2 ; i++)
  {
    Message = Message.replace("<?= name ?>", name[i]);
    Message = Message.replace("<?= company ?>", company[i]);

    HtmlMessage = HtmlMessage.replace("%name", name[i]);
    HtmlMessage = HtmlMessage.replace("%company", company[i]);

    MailApp.sendEmail(
    emailid[i], 
    "test email",
    Message,
    htmlBody: HtmlMessage,
    attachments: [file.getAs(MimeType.PDF), blob]
    );

    Message = OriginalMessage;
    HtmlMessage = OriginalHtmlMessage;
  }
}

Вот HTML Файл:

<!DOCTYPE html>
<html>

<head>
    <base target="_top">
</head>

<body style="font-family: 'Times New Roman', Times, serif;font-size: 1.5em; padding: 5%;">
    Dear %name,<br>
    <div style="line-height: 2;margin-left:5%;">
        XXXX  XXXXXX XXXXXXX XXXXXXX XXXXXXXX XXXX.<br>
        XXXX  XXXXXX XXXXX %company XXXXXXXX XXXXXXXX XXXXX. <br>
        XXXX  XXXXXX XXXXX: <a href="https://www.XXXX">Link</a><br>
        I XXXXXX XXXX  XXXXX<br></div>
    <div style="line-height: 1.5; padding: 5%;">
        With Warm Regards,<br>
        <b>XXXXx</b><br>
        <a href="tel:+XX-XXXXX">Call: +XX-XXXXX</a><br>
        <a href="mailto:XX@XXXXXX.com">Email: XX@XXXXXX.com</a><br></div>
</body>

</html>

Как должны быть параметры для MailApp.SendMail () разместить?

1 Ответ

0 голосов
/ 29 мая 2020

Синтаксис метода: sendEmail (получатель, тема, тело, параметры)

, при этом оба attachments и htmlBody равны options и options равны

a JavaScript объект, который определяет расширенные параметры

Таким образом, вам нужно передать options как объект JSON с парами ключ-значение:

  MailApp.sendEmail(
    emailid[i][0], 
    "test email",
    Message,
    {
      htmlBody: HtmlMessage,
      attachments: [file.getAs(MimeType.PDF)]
    }
  );
...