【问题标题】:Error retrieving image from URL or bad URL with webContentLink使用 webContentLink 从 URL 或错误 URL 检索图像时出错
【发布时间】:2020-10-29 09:23:05
【问题描述】:

我的应用程序正在尝试使用谷歌应用脚​​本将一堆图像插入谷歌驱动表。 脚本方法从 Rails 应用程序调用如下:

@app_script.run_script(script_id, request)

脚本方法正在尝试通过 id 获取图像并将其插入到工作表中。

var srcfile = DriveApp.getFileById(object.image_file_id);
srcfile.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
var image = SpreadsheetApp.openById(object.spreadsheet_id).getSheetByName(object.sheet_name).insertImage(Drive.Files.get(srcfile.getId()).webContentLink, object.column, object.row);

问题是间歇性地出现,来自 google 脚本的响应错误:

Exception: Error retrieving image from URL or bad URL: https://drive.google.com/uc?id=1yZULGInEcjQ_nA4j_Nmy6F2e3JcYnLFP&export=download

请注意,如果我只是复制链接并将其粘贴到浏览器,我可以成功下载图像。 图像文件及其父文件夹是公共共享的。 当问题并不总是发生时,似乎很难发现问题。

关心我剧本的朋友,here

【问题讨论】:

    标签: ruby-on-rails google-apps-script google-drive-api google-sheets-api


    【解决方案1】:

    异常:从 URL 或错误 URL 检索图像时出错

    这是图像尺寸过大时的常见错误消息。

    更多信息请参见here

    在插入之前,您需要手动或以编程方式缩小图像大小。

    更新

    如果上述建议不能解决您的问题,请实施以下解决方法:

    不要使用insertImage(url, column, row) 方法通过webContentLink插入图像,而是使用insertImage(blobSource, column, row)方法:

    var image = SpreadsheetApp.SpreadsheetApp.openById(object.spreadsheet_id).getSheetByName(object.sheet_name).insertImage(DriveApp.getFileById(srcfile.getId()).getBlob(), object.column, object.row);

    这应该可以解决问题。

    【讨论】:

    • 不,即使图像尺寸足够小,我也能观察到问题。
    • 图片类型是什么?是缩略图吗?图片大小呢?
    • 是 png/jpg 图像,错误日志示例:异常:从 URL 或错误 URL 检索图像时出错:drive.google.com/…。只有854 × 501
    • 我今天早上也能重现这个问题。虽然我不太确定错误的原因是什么(可能是谷歌方面的错误?),但有一个解决方法 - 我会更新我的答案。
    • 是的,谢谢您的信息。我知道这是一个暂时的问题,但它有时会发生,不仅在今天。如您所说,将问题提交给 Google 可能会更好。
    猜你喜欢
    • 2013-12-01
    • 1970-01-01
    • 2018-06-04
    • 2018-07-11
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    相关资源
    最近更新 更多