Таблицы Google Добавьте встроенное изображение в сообщение Gmail с помощью функции CreateDraft

Компания, в которой я работаю, в конце месяца переходит на почтовый клиент Google и Suite. В моем отделе используется форма Excel с некоторым кодированием VBA, которое я изучил во время самоизоляции. Одна из основных операций формы, которую я надеюсь перенести в Google Таблицы, — это когда нажимается кнопка, в теле этого письма создается электронное письмо, которое является скриншотом формы.

Поскольку я новичок в Javascript в Google Sheets, за последние несколько дней я нашел различные методы и код для создания изображения и еще один для создания черновика в Gmail. (Важно, чтобы пользователь формы мог видеть электронное письмо перед его отправкой — необходимо добавить дополнительную информацию. Таким образом, функция автоматической отправки Gmail недоступна)

Для чего создан черновик, на почту адрес присутствует, тема, текст сообщения тоже. Но без изображения...

Любые советы или указатели на кодовые страницы с любовью принимаются

function sendit()
{
const range = "A1:H10";
const [header, ...values] = SpreadsheetApp.getActiveSheet()
  .getRange(range)
  .getDisplayValues();
const table = Charts.newDataTable();
header.forEach((e) => table.addColumn(Charts.ColumnType.STRING, e));
values.forEach((e) => table.addRow(e));
const blob = Charts.newTableChart()
  .setDataTable(table.build())
  .setDimensions(500, 500)
  .setOption("alternatingRowStyle", false)
  .build()
  .getBlob();

GmailApp.createDraft("xxxxxx", "current time", "The time is....", blob );


}

person DavidHowarth    schedule 09.03.2021    source источник


Ответы (2)


Я думаю, если вы хотите добавить изображение, тело должно быть html с тегом изображения.

Or

Или изображение добавляется как опция, поэтому метод должен быть:

.createDraft (получатель, тема, тело, {inlineImages: источник большого двоичного объекта})

(Опции добавляются как объекты)

См. документы

https://developers.google.com/apps-script/reference/gmail/gmail-app#createdraftrecipient,-subject,-body,-options

Возможно, проверьте этот ответ:

Добавить изображение в скрипт приложения электронной почты Google Sheets

person Monkeypunky    schedule 10.03.2021
comment
Спасибо за эти файлы справки и попробовал несколько версий вашей линии и их. По какой-то причине он добавляет файл png в качестве вложения, но далее будет рассмотрено, почему GmailApp.createDraft(xxxxxx,,,{ htmlBody: msgHtml, inlineImages:{image:blob}}); - person DavidHowarth; 10.03.2021

Большое спасибо Monkey Punky за ваши статьи, которые заставили его работать с приведенным ниже кодом.

лист var = SpreadsheetApp.getActiveSpreadsheet() .getSheetByName(Main);

  var to = "xxxxxxxxxx.com";
  var message = '<img src="cid:logo" />';

 
const range = "A1:H10";
const [header, ...values] = SpreadsheetApp.getActiveSheet()
  .getRange(range)
  .getDisplayValues();
const table = Charts.newDataTable();
header.forEach((e) => table.addColumn(Charts.ColumnType.STRING, e));
values.forEach((e) => table.addRow(e));
var image  = Charts.newTableChart()
  .setDataTable(table.build())
  .setDimensions(500, 500)
  .setOption("alternatingRowStyle", false)
  .build()
  .getBlob();




  GmailApp.createDraft(
    to,
    "Subject",
    "",
    {
      inlineImages:{ logo:image },
      htmlBody:message
    }
  );
}
person DavidHowarth    schedule 10.03.2021