Вставка 3D-диаграммы из Google Sheet в электронную почту в виде изображения с использованием Appscript - PullRequest
2 голосов
/ 28 апреля 2019

Я пытаюсь вставить 3D-диаграммы из листа Google в электронное письмо, используя приведенный ниже код, но изображение в электронном письме преобразуется в 2D.Может кто-нибудь помочь мне вытащить диаграммы из листа Google в электронное письмо со всеми его неповрежденными свойствами?

Исходная диаграмма

Диаграмма в электронной почте

function email(sheet, toMail, ccMail, msg){
  var charts = sheet.getCharts();
  var emailImages={};
  var chartBlobs=new Array(charts.length); 
  for(var i=0;i<charts.length;i++){    
    chartBlobs[i]= charts[i].getAs("image/png").setName("chartBlob"+i);
    emailBody= emailBody + "<p align='left'><img src='cid:chart"+i+"'></p>";
    emailImages["chart"+i]= chartBlobs[i];
  }
  MailApp.sendEmail({
    to: toMail,    
    cc: ccMail,
    subject: "ABC",   
    htmlBody: emailBody,
    inlineImages:emailImages});

}

1 Ответ

1 голос
/ 29 апреля 2019
  • Вы хотите отправить электронное письмо, включая трехмерную диаграмму в электронной таблице.

Если мое понимание верно, как насчет этого обходного пути? Я испытал ту же проблему с вами. Когда диаграмма в электронной таблице извлекается в виде большого двоичного объекта, диаграмма большого двоичного объекта отличается от исходной диаграммы. Я думаю, что это может быть ошибкой. В этом случае в качестве одного из нескольких обходных путей я использовал следующий поток.

Поток измененного скрипта:

  1. Получить диаграммы из электронной таблицы.
  2. Создание Google Slides как временных.
  3. Вставка диаграмм в слайды как изображения.
  4. Извлечение вставленных диаграмм в виде BLOB-объектов.
  5. Отправка электронной почты, включая полученный BLOB-объект.
  6. Удалить временные Google Slides.

Модифицированный скрипт:

В этой модификации я модифицировал ваш скрипт. Пожалуйста, измените ваш скрипт следующим образом.

function email(sheet, toMail, ccMail, msg){
  var charts = sheet.getCharts();

  var slides = SlidesApp.create("sample"); // Added
  var slide = slides.getSlides()[0]; // Added

  var emailImages={};
  var chartBlobs=new Array(charts.length);
  var emailBody = ""; // Added
  for(var i=0;i<charts.length;i++){
    var image = slide.insertSheetsChartAsImage(charts[i]); // Added
    chartBlobs[i]= image.getAs("image/png").setName("chartBlob"+i); // Modified
    emailBody= emailBody + "<p align='left'><img src='cid:chart"+i+"'></p>";
    emailImages["chart"+i]= chartBlobs[i];
  }
  MailApp.sendEmail({
    to: toMail,
    cc: ccMail,
    subject: "ABC",
    htmlBody: emailBody,
    inlineImages:emailImages});

  DriveApp.getFileById(slides.getId()).setTrashed(true); // Added
}

Примечание:

Ссылки:

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

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