Как отправить слайд Google в виде вложения в электронное письмо, используя google-appscripts? - PullRequest
2 голосов
/ 24 октября 2019

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

// This code fetches the Google and YouTube logos, inlines them in an email
// and sends the email
function inlineImage() {
var googleLogoUrl = "https://i.imgur.com/CWmA6Jv.png";
var youtubeLogoUrl =
    "https://i.imgur.com/CWmA6Jv.png";
var googleLogoBlob = UrlFetchApp
                     .fetch(googleLogoUrl)
                     .getBlob()
                     .setName("Scratches Alert");
var youtubeLogoBlob = UrlFetchApp
                      .fetch(youtubeLogoUrl)
                      .getBlob()
                      .setName("Scratches Dashboard");
MailApp.sendEmail({
to: "test@testmail.com",
subject: "Scratches Awareness Program",
htmlBody: "<p>This is to inform about the progress of Scratch Awareness 
Programme.<p> Engineers, supervisors & shift leaders are expected to 
display and brief thier team on the latest update based on visual comm. 
Everyone's involvement is highly appreciated. Please click on the given 
link to access Scratches Alert and Dashboard: 
https://www.youtube.com/watch?v=dQw4w9WgXcQ</p></p><p><img 
src='cid:googleLogo' width='500' height='333'><img src='cid:youtubeLogo' 
width='500' height='333'></p>",
inlineImages:
  {
    googleLogo: googleLogoBlob,
    youtubeLogo: youtubeLogoBlob
    }
  });
 }

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

1 Ответ

1 голос
/ 24 октября 2019

Получение изображений слайд-презентаций

Первая функция сохраняет все ваши слайды в виде изображений в локальной папке по вашему выбору. Он также копирует имя файла, FileId, высоту, ширину и URL на активную страницу для последующего использования. Вы можете изменить его, чтобы выбрать одно изображение. Вам также нужно будет включить Advanced Slides API, чтобы использовать эту функцию, потому что она находится на фактическом элементе, который может получить доступ к изображению слайда.

function getImagesOfSlides() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  sh.clearContents();
  sh.appendRow(['FileName','FileId','Height','Width','URL']);
  var presentationId="Presentation Id";
  var fldr=DriveApp.getFolderById("File Folder Id");
  var sp=SlidesApp.openById(presentationId);
  var slds=sp.getSlides();
  var n=1;
  for(var i=0;i<slds.length;i++) {
    var pageObjectId=slds[i].getPageElements()[0].getParentPage().getObjectId();
    if(pageObjectId) { 
      var respObj=Slides.Presentations.Pages.getThumbnail(presentationId, pageObjectId, {"thumbnailProperties.mimeType":"PNG","thumbnailProperties.thumbnailSize":"MEDIUM"});
      var imgBlob=UrlFetchApp.fetch(respObj.contentUrl).getBlob();
      var file=fldr.createFile(imgBlob).setName('Slide'+ n++ + '.png');
      sh.appendRow([file.getName(),file.getId(),respObj.height,respObj.width,respObj.contentUrl]);
    }
  }
}

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

function sendSlide() {
  var fileId="File Id";
  var file=DriveApp.getFileById(fileId);
  GmailApp.sendEmail('recipient email', 'Sending An Image', 'This is a test file', {attachments:[file]});
}

Справочник по API Этот справочник очень полезен при выяснении синтаксиса для параметров миниатюр API.

Параметры размера миниатюры

Остальное - просто стандартный код DriveApp.

Вот как выглядит информация электронной таблицы:

enter image description here

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