如何使用 google 脚本将 tiff 插入幻灯片?
How to insert tiffs into slides with google script?
我正在尝试使用 google 脚本从驱动器将 tiff 图像(和其他不受支持的格式,例如 bmps)插入到 google 幻灯片中。我正在使用以下代码:
imageID = '';
slideID = '';
function insertImageFromDrive() {
var image = DriveApp.getFileById(imageID);
var presentation = SlidesApp.openById(slideID);
presentation.getSlides()[0].insertImage(image);
}
但我从 'insertImage' 收到错误 'Exception: The image you are trying to use is invalid or corrupt.'。
是否有解决方法或其他方法?
谢谢。
如 .insertImage()
documentation 中所述:
Inserting the image fetches it from the BlobSource once and a copy is stored for display inside the presentation. Images must be less than 50MB in size, cannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF format.
因此不直接支持 TIFF 和 BMP。但是,我们可以使用 File.getAs()
在某些图像类型之间进行转换,这将尝试转换文件格式。作为 documented:
For images in BMP, GIF, JPEG, or PNG format, any of 'image/bmp', 'image/gif', 'image/jpeg', or 'image/png' are also valid.
所以尝试将有问题的行更改为
var image = DriveApp.getFileById(imageID).getAs('image/jpeg');
这应该适用于 BMP,但可能不适用于 TIFF。对于 TIFF,您可能需要使用一些第三方转换工具。
我相信你的目标如下。
- 您想检索 TIFF 和 BMP 图像文件并将它们放入 Google 幻灯片。
遗憾的是,在现阶段,这些图片文件还不能直接放到Google幻灯片中。在这种情况下,需要将它们转换为另一种可以放入 Google 幻灯片的格式。在这个回答中,我想介绍一下这个方法。
示例脚本:
此脚本使用驱动器 API。所以当你使用这个脚本时,please enable Drive API at Advanced Google services.
var imageID = "###" // Please set the file ID of the image file.
var imageUrl = Drive.Files.get(imageID).thumbnailLink.replace(/\=s\d+/, "=s1000");
var presentation = SlidesApp.openById(slideID);
presentation.getSlides()[0].insertImage(imageUrl);
此外,您还可以使用以下脚本。
var imageID = "###" // Please set the file ID of the image file.
var imageUrl = Drive.Files.get(imageID).thumbnailLink.replace(/\=s\d+/, "=s1000");
var image = UrlFetchApp.fetch(imageUrl).getBlob();
var presentation = SlidesApp.openById(slideID);
presentation.getSlides()[0].insertImage(image);
- 修改查询参数使用
thumbnailLink
时,可以将各种mimeType的图片转为PNG格式。本方法就是利用这种情况。
参考:
我正在尝试使用 google 脚本从驱动器将 tiff 图像(和其他不受支持的格式,例如 bmps)插入到 google 幻灯片中。我正在使用以下代码:
imageID = '';
slideID = '';
function insertImageFromDrive() {
var image = DriveApp.getFileById(imageID);
var presentation = SlidesApp.openById(slideID);
presentation.getSlides()[0].insertImage(image);
}
但我从 'insertImage' 收到错误 'Exception: The image you are trying to use is invalid or corrupt.'。
是否有解决方法或其他方法?
谢谢。
如 .insertImage()
documentation 中所述:
Inserting the image fetches it from the BlobSource once and a copy is stored for display inside the presentation. Images must be less than 50MB in size, cannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF format.
因此不直接支持 TIFF 和 BMP。但是,我们可以使用 File.getAs()
在某些图像类型之间进行转换,这将尝试转换文件格式。作为 documented:
For images in BMP, GIF, JPEG, or PNG format, any of 'image/bmp', 'image/gif', 'image/jpeg', or 'image/png' are also valid.
所以尝试将有问题的行更改为
var image = DriveApp.getFileById(imageID).getAs('image/jpeg');
这应该适用于 BMP,但可能不适用于 TIFF。对于 TIFF,您可能需要使用一些第三方转换工具。
我相信你的目标如下。
- 您想检索 TIFF 和 BMP 图像文件并将它们放入 Google 幻灯片。
遗憾的是,在现阶段,这些图片文件还不能直接放到Google幻灯片中。在这种情况下,需要将它们转换为另一种可以放入 Google 幻灯片的格式。在这个回答中,我想介绍一下这个方法。
示例脚本:
此脚本使用驱动器 API。所以当你使用这个脚本时,please enable Drive API at Advanced Google services.
var imageID = "###" // Please set the file ID of the image file.
var imageUrl = Drive.Files.get(imageID).thumbnailLink.replace(/\=s\d+/, "=s1000");
var presentation = SlidesApp.openById(slideID);
presentation.getSlides()[0].insertImage(imageUrl);
此外,您还可以使用以下脚本。
var imageID = "###" // Please set the file ID of the image file.
var imageUrl = Drive.Files.get(imageID).thumbnailLink.replace(/\=s\d+/, "=s1000");
var image = UrlFetchApp.fetch(imageUrl).getBlob();
var presentation = SlidesApp.openById(slideID);
presentation.getSlides()[0].insertImage(image);
- 修改查询参数使用
thumbnailLink
时,可以将各种mimeType的图片转为PNG格式。本方法就是利用这种情况。