演示文稿的缩略图在创建、保存和关闭后立即为空

问题描述 投票:0回答:1

我创建一个演示文稿,在其中插入图像,保存并关闭它。 使用 Drive API,我得到一个缩略图链接,然后是一个 blob,并从中创建一个 PNG 文件。 问题是该文件是空的并且不包含插入的图像。

这是代码:

function toPng() {
  const folderId = "###";
  const imageUrl = "https://www.google.com/images/srpr/logo3w.png";

  var presentation = SlidesApp.create('Test');
  var prId = presentation.getId();
  // var prId = "#####";

  var slide = presentation.getSlides()[0];
  slide.insertImage(imageUrl);
  presentation.saveAndClose();
  // Utilities.sleep(60000);

  const thumbLink = Drive.Files.get(prId).thumbnailLink;
  const thumbnailURL = thumbLink.replace(/=s.+/, "=s100");

  const pngBlob = UrlFetchApp.fetch(thumbnailURL).getBlob();
  const destinationFolder = DriveApp.getFolderById(folderId);
  destinationFolder.createFile(pngBlob).setName('newFile.png');
}

如果您注释掉

var prId = presentation.getId()
并替换之前创建的演示文稿的 id
var prId = "#####"
,那么一切都很好,图像在文件中。

我认为问题是缩略图需要一段时间才能创建。 我添加了

Utilities.sleep(1000)
,将延迟时间增加到 2 分钟 - 但没有帮助。

我将不胜感激您对如何解决这个问题的想法。

google-apps-script google-drive-api thumbnails google-slides
1个回答
0
投票

我和你有同样的情况。不幸的是,我不确定这是否是当前规范或错误。但是,当时使用Slides API时,我注意到可以获取缩略图。那么,作为当前的解决方法,使用 Slides API 怎么样?当这反映在您的放映脚本中时,它会变成如下所示。

测试时,请在高级 Google 服务中启用 Slides API

来自:

const thumbLink = Drive.Files.get(prId).thumbnailLink;
const thumbnailURL = thumbLink.replace(/=s.+/, "=s100");

致:

const thumbnailURL = Slides.Presentations.Pages.getThumbnail(prId, slide.getObjectId(), { "thumbnailProperties.mimeType": "PNG", "thumbnailProperties.thumbnailSize": "SMALL" }).contentUrl;
  • 尺寸可以从

    LARGE&
    MEDIUM
    SMALL
    中选择。

  • 当我测试此修改时,我得到了以下图像。

参考:

© www.soinside.com 2019 - 2024. All rights reserved.