Вставить текст с гиперссылкой в ​​Gmail с помощью Google Script?

Я пытаюсь отправить электронное письмо с вложением и URL-адресом вложения. Тело электронной почты будет выглядеть так:

"Всем привет-

Вот повестка дня завтрашней встречи.

Увидимся утром!

-Джон Доу"

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

  function sendEmailTest() {
  //test send email.
  // Send an email with an attachment: a file from Google Drive.
    var file = DocumentApp.openById(file2.getId());
    var ssUrl = 'URL_BUFFERED';
    var sheetName = 'Sheet1';   // name of sheet to use
    var rangeName = 'C30';    // range of values to include 
    var dateRange = SpreadsheetApp.openByUrl(ssUrl)
       .getSheetByName(sheetName)
       .getRange(rangeName)
       .getValues();

  // Name of Google file to attach.
    var file2 = file.makeCopy('Weekly Agenda | '+dateRange);

  // Set Agenda URL.
    var theBody = GmailApp.openById(file2.getId()).getBody();
    var elementReplaced = theBody.replaceText("%toReplace%", "agendaURL");
    elementReplaced.asText().setLinkUrl("https://google.com");

  //Send email.
        MailApp.sendEmail('who@whowantstoknow.com', file2, 'Hi Everyone- \n Here\'s the ' +agendaURL+'agenda for tomorrow
                   's meeting. \n See you in the morning! \n-John Doe', {
        name: 'Automatic Emailer Script',
        attachments: [file.getAs(file2)] });
}

2 ответа

Решение

Я обнаружил, что отправка электронных писем с использованием GAS предлагается делать в HTML. Зак только что опубликовал свой ответ сразу после того, как я нашел лучший способ переписать свой код. Спасибо, Зак, хотя! Вот мой рабочий код:

    var emailTo = 'totheuniverse@omnipresence.com';
    var subject = "Weekly Agenda | " +dateRange;
    var options = {}
    options.htmlBody = "Hi Everyone-" +'<br />'+'<br />'+ "Here\'s the " + '<a href=\"' +agendaURL+ '">agenda</a>' + " for tomorrow\
's meeting." +'<br />'+'<br />'+ "See you in the morning!" +'<br />'+'<br />'+ "-John Doe";
    options.attachment = [file];
    MailApp.sendEmail(emailTo, subject, '', options);

Вставка гиперссылки в электронное письмо требует отправки электронного письма в формате HTML, а не в виде обычного текста, как вы это делаете сейчас. Измените синтаксис вызова sendEmail на sendEmail(Object) где аргумент - это объект с полем htmlBody, содержащим ваше сообщение. Как это:

var message = {
  to: "recipient@example.com",
  subject: "Weekly Agenda | " + dateRange,
  htmlBody: "Hi Everyone-\n Here's the <a href='" + agendaURL + ''">agenda</a> for tomorrow's meeting.\n See you in the morning!\n-John Doe", 
  name: "Automatic Emailer Script",
  attachments: [file2.getAs(MimeType.PDF)]
};
MailApp.sendEmail(message); 

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

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

<a href="https://www.youtube.com/watch?v=YHIwETgynFw&feature=youtu.be">click here</a>
Другие вопросы по тегам