作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在使用谷歌脚本将谷歌驱动器中的图像插入谷歌表时遇到问题。从 url 加载时,我可以让它完美工作,但不能从 google 驱动器文件作为 blob 加载。该脚本验证大小为 88KB,但随后在运行插入函数时抛出错误,指出文件大于 2MB。
然而,88KB 文件可以很好地从 URL 加载。
blob 会不会在一个 88KB 的文件周围添加了超过 2MB 的数据?也许我不太了解如何使用 blob?
function InsertImageTest() {
// this is a file with a single sheet with a png image over the grid, starting at cell A1
var ReportSpeadsheet = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/the-file-id/edit#gid=0")
var ReportSheet = ReportSpeadsheet.getSheetByName("Sheet1");
var File1 = DriveApp.getFileById("fileId1"); // this is a 763byte png image
var File2 = DriveApp.getFileById("fileId2"); // this is a 88KB png image
Logger.log("File1=" + File1.getName()); // returns correct name for file
Logger.log("File2" + File2.getName()); // returns correct name for file
Logger.log("File1=" + File1.getSize()); //File1=763
Logger.log("File2=" + File2.getSize()); //File2=89678
try { ReportSheet.insertImage(File1, 1, 1); } catch (err) {
Logger.log("File1 failed " + err); //Works
}
try { ReportSheet.insertImage(File2, 1, 2); } catch (err) {
Logger.log("File2 failed " + err); //Exception: The blob was too large. The maximum blob size is 2MB. The maximum number of pixels is 1 million.
}
// Also tried File2.getAs('image/png') and File2.getBlob() as the blob argument, same error message.
// testing the 88KB file uploaded to a URL on my website.
ReportSheet.insertImage("www.theURL.com/the88KBfile.png", 1, 3); // works fine
}
最佳答案
retrofit 要点:
insertImage()
的图片大小限制可以在 SpreadsheetApp.insertImage server error 看到在当前阶段,似乎最大图像大小为 insertImage()
是 1,048,576 像素^2。 function InsertImageTest() {
var ReportSpeadsheet = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/the-file-id/edit#gid=0");
var ReportSheet = ReportSpeadsheet.getSheetByName("Sheet1");
// --- I modified below script.
var fileIds = ["fileId1", "fileId2"]; // <--- Please set the file IDs of the image files.
fileIds.forEach((id, i) => {
var obj = Drive.Files.get(id);
var image = obj.imageMediaMetadata && (obj.imageMediaMetadata.width * obj.imageMediaMetadata.height) > 1048576 ? obj.thumbnailLink.replace(/=s\d+/, "=s500") : DriveApp.getFileById(id).getBlob();
ReportSheet.insertImage(image, 1, i + 1);
});
}
=s500
.但是,当图像大小超过 1,048,576 像素 ^2 时,就会发生错误。请注意这一点。 关于google-apps-script - 使用 Google Apps 脚本将图像作为 BlobSource 插入到工作表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66782960/
我一直在使用谷歌脚本将谷歌驱动器中的图像插入谷歌表时遇到问题。从 url 加载时,我可以让它完美工作,但不能从 google 驱动器文件作为 blob 加载。该脚本验证大小为 88KB,但随后在运行插
我是一名优秀的程序员,十分优秀!