Как мы можем отформатировать электронную почту, используя Google App Script - PullRequest
0 голосов
/ 11 июня 2019

Я написал небольшой код, который собирает 'text', 'email' и 'subject' из электронной таблицы и отправляет gmail получателю.Google Script работает нормально, однако ширина автоматизированного gmail фиксирована.Поэтому, когда длина «текста» изменяется, ширина gmail не меняется, что приводит к изменениям в размещении текста, и это выглядит немного странно.

Пример моего кода: -

function temp2() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var dataSheet = ss.getSheetByName('Sheet1');
  var templateSheet = ss.getSheetByName('Sheet2');
  var emailTemplate2 = templateSheet.getRange("G1").getValue();
  var rec = templateSheet.getRange("C1").getValue();
  var sub = templateSheet.getRange("D1").getValue();
//  Logger.log(rec);
  MailApp.sendEmail(rec, sub, emailTemplate2);
}

Первое изображениемоего усеченного электронного письма: - image

Второе изображение моего усеченного электронного письма: - image2

В этом письме 'май /Декабрь »,« 171/26131 »и« апрель / ноябрь »- динамичные слова.Из-за чего моя вторая строка письма (как вы можете видеть на этом изображении) иногда заканчивается на «после» или иногда на «закрыто» (в зависимости от длины этих трех динамических записей).

В идеале вМоя ширина Gmail должна быть динамической, и она должна заканчиваться на «Period (.)» после названия месяца, в этом случае это апрель / ноябрь.Я хотел бы проверить, есть ли у нас какие-либо подопции в GAS, с помощью которых мы можем сделать «ширину gmail динамической»?Я просмотрел MailApp.sendEmail Параметры в документации, но не смог найти более подробную информацию.

Любое предложение по этому вопросу будет очень полезным.

С уважением,

Alok

1 Ответ

1 голос
/ 12 июня 2019

Вы можете использовать метод "sendEmail (получатель, тема, тело, параметры)" с параметром body пустым ("") и добавить параметры Json с ключом htmlBody (который будет использоваться вместо значения body).

В значении htmlBody (строка) вы можете расположить текст по своему усмотрению. В вашем случае вы получаете значения из листа, так что вы можете поместить весь html-код напрямую и объединить его со значением листа, которое будет телом письма.

Вот рабочий пример:

function temp2() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var dataSheet = ss.getSheetByName('Sheet1');
  var templateSheet = ss.getSheetByName('Sheet2');
  var emailTemplate2 = templateSheet.getRange("G1").getValue();
  var rec = templateSheet.getRange("C1").getValue();
  var sub = templateSheet.getRange("D1").getValue();
  //  Logger.log(rec);
  MailApp.sendEmail(rec, sub, "", {
    htmlBody: '<html lang="en"><head><meta charset="utf-8"></head><body><div style="width:1864px;">' + emailTemplate2  + '</div></body></html>'
  });
}

Там я поместил все содержимое тела в элемент <div> со свойством width, установленным в 1864px, вы можете настроить его так, как вам нужно, чтобы все тело помещалось в одну строку.

Другими вариантами могут быть использование html-кода внутри ячейки листа и форматирование текста там, как вы хотите, используя <div>, <p>, <br>, <strong> и т. Д.

Для дальнейшего чтения: https://developers.google.com/apps-script/reference/mail/mail-app

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