You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用脚本将Google Drive图片插入Google Slides时遇错误如何解决?

问题:通过Google Apps Script插入Drive中图片到Slides时提示“图片无效或损坏”

我尝试通过脚本将存储在Google Drive中的JPG图片(大小小于50MB)插入到Google Slides演示文稿中,使用的脚本如下:

function addImageToSlide() {
  var presentation = SlidesApp.openById("PRESENTATION ID");
  var slide = presentation.appendSlide(SlidesApp.PredefinedLayout.BLANK);

  var imgId = "IMAGE ID";
  var url = `https://drive.google.com/uc?export=download&id=${imgId}`;
  var logo = UrlFetchApp.fetch(url, { headers: { authorization: "Bearer " + ScriptApp.getOAuthToken() } }).getBlob();

  try {
    var image = slide.insertImage(logo);

    // 获取页面尺寸
    var pageWidth = presentation.getPageWidth();
    var pageHeight = presentation.getPageHeight();

    // 居中图片
    image.setLeft(pageWidth / 2 - image.getWidth() / 2);
    image.setTop(pageHeight / 2 - image.getHeight() / 2);

  } catch (err) {
    console.log("An error occurred: ", err);
  }
}

但脚本持续返回错误:

An error occurred:  { [Exception: The image you are trying to use is invalid or corrupt.] name: 'Exception' }

尝试使用图片缩略图插入可成功,但画质非常差,因此仍在寻找能插入高分辨率图片的方法。请问代码或图片存在什么问题?


问题原因与解决方法

  • 核心问题:Drive下载URL的解析异常
    你使用的https://drive.google.com/uc?export=download&id=${imgId}链接,部分场景下(比如文件需要安全验证、Drive的下载跳转机制)返回的并非原始图片的二进制数据,而是包含下载确认逻辑的网页内容,Slides无法识别这种内容,因此判定为“无效或损坏”的图片。

  • 最优解决方法:直接通过DriveApp获取图片Blob
    替换UrlFetchApp的请求逻辑,改用DriveApp直接读取文件Blob,代码修改如下:

function addImageToSlide() {
  var presentation = SlidesApp.openById("PRESENTATION ID");
  var slide = presentation.appendSlide(SlidesApp.PredefinedLayout.BLANK);

  var imgId = "IMAGE ID";
  // 直接通过DriveApp获取图片Blob,跳过下载URL环节
  var logo = DriveApp.getFileById(imgId).getBlob();

  try {
    var image = slide.insertImage(logo);

    // 获取页面尺寸
    var pageWidth = presentation.getPageWidth();
    var pageHeight = presentation.getPageHeight();

    // 居中图片
    image.setLeft(pageWidth / 2 - image.getWidth() / 2);
    image.setTop(pageHeight / 2 - image.getHeight() / 2);

  } catch (err) {
    console.log("An error occurred: ", err);
  }
}
  • 额外排查项
    • 权限验证:确保脚本运行的Google账号拥有该Drive图片的查看或编辑权限,如果是共享文件,需确认权限未被限制。
    • 图片完整性:本地打开该JPG图片确认是否正常显示,若存在损坏,重新上传原始图片到Drive。

内容的提问来源于stack exchange,提问作者Henrique Felipetto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 15:33:30