如何下载Google幻灯片作为图片?

tom*_*low 12 png google-apps-script google-slides

我非常喜欢使用Google Slides作为云托管的轻量级插图画家替代品(也恰好是协作和免费的!).我在这里写了一些关于我的过程的想法:

https://medium.com/@tomcritchlow/how-to-use-google-slides-as-a-free-cloud-hosted-illustrator-replacement-f472e6c3a881

我在工作流程中尝试做的是立即将演示文稿中的所有幻灯片作为图像下载?Google幻灯片用户界面只允许您一次下载每张幻灯片作为PNG吗?

这是否可能以某种方式使用附加组件或应用程序脚本?不知道从哪里开始...谢谢!

Bar*_*rdy 11

以下为我工作:

设定

在“ 资源”>“开发人员控制台项目”>“ View Developers Console”下,启用Slides APIDrive API

执行

替换从start()函数中的幻灯片URL获取的ID ,然后运行它,例如:

https://docs.google.com/presentation/d/<id>/edit
Run Code Online (Sandbox Code Playgroud)

该功能会将PNG保存到您的云端硬盘。这可以扩展为将它们全部分组在一个特定的文件夹中,等等。

function downloadPresentation(id) {
  var slideIds = getSlideIds(id); 

  for (var i = 0, slideId; slideId = slideIds[i]; i++) {
    downloadSlide('Slide ' + (i + 1), id, slideId);
  }
}

function downloadSlide(name, presentationId, slideId) {
  var url = 'https://docs.google.com/presentation/d/' + presentationId +
    '/export/png?id=' + presentationId + '&pageid=' + slideId; 
  var options = {
    headers: {
      Authorization: 'Bearer ' + ScriptApp.getOAuthToken()
    }
  };
  var response = UrlFetchApp.fetch(url, options);
  var image = response.getAs(MimeType.PNG);
  image.setName(name);
  DriveApp.createFile(image);
}

function getSlideIds(presentationId) {
  var url = 'https://slides.googleapis.com/v1/presentations/' + presentationId;
  var options = {
    headers: {
      Authorization: 'Bearer ' + ScriptApp.getOAuthToken()
    }
  };
  var response = UrlFetchApp.fetch(url, options);

  var slideData = JSON.parse(response);
  return slideData.slides.map(function(slide) {
    return slide.objectId;
  });
}

function start() {
  downloadPresentation('Slides document id')
}
Run Code Online (Sandbox Code Playgroud)


Eri*_*eda 5

获取幻灯片图像的最佳方法是使用presentations.pages.getThumbnail端点:

https://developers.google.com/slides/reference/rest/v1/presentations.pages/getThumbnail

以下 Apps 脚本代码用于SlidesApp遍历幻灯片,使用 Slides Advanced Service 生成缩略图、UrlFetchApp获取生成的缩略图并将DriveApp其保存到 Drive:

function exportSlideImages(presentationId) {
  var presentation = SlidesApp.openById(presentationId);
  presentation.getSlides().forEach(function(slide, i) {
    // slide = presentation.getSlides()[];
    var thumbnail = Slides.Presentations.Pages.getThumbnail(presentationId, slide.getObjectId(), {
      'thumbnailProperties.thumbnailSize': 'LARGE'
    });
    var response = UrlFetchApp.fetch(thumbnail.contentUrl);
    var blob = response.getBlob();
    blob.setName('slide' + (i + 1) + '.png');
    var file = DriveApp.createFile(blob);
    Logger.log('Created file "%s" for slide number %s', file.getName(), i + 1);
  });
}
Run Code Online (Sandbox Code Playgroud)