gpt4 book ai didi

google-apps-script - 使用 Google Apps 脚本将图像作为 BlobSource 插入到工作表中

转载 作者:行者123 更新时间:2023-12-04 07:54:16 25 4
gpt4 key购买 nike

我一直在使用谷歌脚本将谷歌驱动器中的图像插入谷歌表时遇到问题。从 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。
  • 为了避免您的问题,我想建议调整图像大小。

  • 当你的脚本被修改时,它变成如下。
    修改后的脚本:
    此示例脚本使用 Drive API 来检索图像大小。所以在你使用这个脚本之前, please enable Drive API at Advanced Google services .并且,请设置您的图像文件的文件 ID。
    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);
    });
    }
  • 在这个示例脚本中,当图像大小超过 1,048,576 像素 ^2 时,图像被缩小并返回缩小图像的 URL。当图像大小小于 1,048,576 像素 ^2 时,返回图像的 blob。
  • 调整后的图像宽度为 500 像素。当您要更改此项时,请修改 =s500 .但是,当图像大小超过 1,048,576 像素 ^2 时,就会发生错误。请注意这一点。

  • 引用:
  • 相关主题和要点。
  • SpreadsheetApp.insertImage server error
  • Limitations for Inserting Images to Google Docs

  • insertImage(blobSource, column, row)
  • insertImage(url, column, row)
  • 关于google-apps-script - 使用 Google Apps 脚本将图像作为 BlobSource 插入到工作表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66782960/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com