我创建一个演示文稿,在其中插入图像,保存并关闭它。 使用 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 分钟 - 但没有帮助。
我将不胜感激您对如何解决这个问题的想法。
我和你有同样的情况。不幸的是,我不确定这是否是当前规范或错误。但是,当时使用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;