Использовать черновик Gmail в качестве шаблона HTML - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь использовать тело HTML из черновика Gmail, а затем использовать класс шаблонов HTML для замены определенных фрагментов текста.

Я могу получить тело HTML из черновика и создать и отправитьновое электронное письмо из этого черновика

function myFunction() {
  //Get the Draft as html
  var draft = GmailApp.search('subject:Test Email label:draft', 0, 1);
  var html = draft[0].getMessages()[0].getBody()

  //Set the template file as a variable
  var body = HtmlService.createTemplate(html);

  body.first = 'Tester';

  //evaluate the html, make substitutions, and get the html body for the email
  var email_html = body.getCode();
  Logger.log(email_html)

  //Send the email(s)
  MailApp.sendEmail({
  to: 'test@gmail.com',
  subject: 'Sample Email from Draft',
  htmlBody: email_html,
  });
}

Проблема: в журналах переменная в HTML-файле, подлежащем замене, отображается как

1 Ответ

0 голосов
/ 07 апреля 2019

Мне удалось решить проблему с помощью метода .replace () вместо .evaluate (). GetContent ().

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

Следующий код достигает цели и использует значения строки заголовка в качестве идентификаторов поля слияния в черновом электронном письме.

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

Если у кого-то есть более чистый способ удаления повторяющихся элементов в коде, пожалуйста, дайте мне знать!

Вот ссылка для копирования Google Sheet со встроенным скриптом. электронное письмо от черновика Google Sheet

Цель состояла в том, чтобы дать конечному пользователю возможность объединяться с листа в электронное письмо без использования надстройки, которая была ограничена 50 электронными письмами до того, как их спросилипокупать.Это ограничено только квотами Gmail.

function EmailFromDraft() {
  var sheet = SpreadsheetApp.getActiveSheet()
  var temp = []

  //get the header row values
  var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();

  //get the values for all other rows in the sheet
  data = sheet.getRange(2, 1, sheet.getLastRow()-1, sheet.getLastColumn()).getValues();

  //Set the replacement variables from the header row, wrap them in braces to match the draft email and put into array
  for (var i in headers) {
    var row = headers[i];
    for (var i in row) {
      var item = '{' + row[i] + '}';
      temp.push(item);
    }
  }

  //Get the Draft as html

  //Prompt user for Draft Subject
  var ui = SpreadsheetApp.getUi();
  var response = ui.prompt('Template Choice', 'Please enter the Subject of your Email Template. (Must have the Drafts Label.).', ui.ButtonSet.OK_CANCEL);
  var subject = response.getResponseText()

  //var subject = 'Drug Test Email'
  var search = 'subject:' + subject + ' label:draft'
  Logger.log(search)
  var draft = GmailApp.search(search, 0, 1);
  var html = draft[0].getMessages()[0].getBody();

  //Reg Expression Samples//
  //var re = /{first}/gi;
  //var str = '{first} are round, and {first} are juicy.';
  //var newstr = str.replace(re, 'oranges');
  //Logger.log(newstr);

  //iterate through the rows in the sheet, make replacements, send the email
  for (var i in data){
    row = data[i];
    //Format each header item as a regular expression
    var item0 = new RegExp(temp[0], 'g');
    var item1 = new RegExp(temp[1], 'g');
    var item2 = new RegExp(temp[2], 'g');
    var item3 = new RegExp(temp[3], 'g');
    var item4 = new RegExp(temp[4], 'g');
    var item5 = new RegExp(temp[5], 'g');
    var item6 = new RegExp(temp[6], 'g');
    var item7 = new RegExp(temp[7], 'g');
    var item8 = new RegExp(temp[8], 'g');
    var item9 = new RegExp(temp[9], 'g');
    var item10 = new RegExp(temp[10], 'g');
    var item11 = new RegExp(temp[11], 'g');
    var item12 = new RegExp(temp[12], 'g');

    //Set the email address variable. This is the only inflexible column
    var email = row[0];

    //Make the replacements
    var emailHtml = html.replace(item0, row[0]).replace(item1, row[1]).replace(item2, row[2]).replace(item3, row[3]).replace(item4, row[4]).replace(item5, row[5]).replace(item6, row[6]).replace(item7, row[7]).replace(item8, row[8]).replace(item9, row[9]).replace(item10, row[10]).replace(item11, row[11]).replace(item12, row[12]);
    //var html_final = html.replace(item3, row[3]);

    //Send the email(s)
    MailApp.sendEmail({
      to: email,
      subject: subject,
      htmlBody: emailHtml,
    });
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...