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

使用UrlFetchApp下载PNG图片生成损坏文件的问题排查

问题分析与解决方案

你的代码问题出在DriveApp.createFile的参数使用错误:

当前代码调用的createFile(name, content, mimeType)重载方法,第二个参数要求是字符串内容,但你传入了Blob对象,这会导致Blob被强制转换为字符串(而非写入二进制数据),最终生成的文件内容是Blob对象的文本描述,而非PNG的二进制图像数据,所以文件损坏且仅4KB大小。

修正后的代码

直接使用createFile(blob)重载方法,传入获取到的Blob即可:

function download() {
  let imageBlob = UrlFetchApp.fetch("https://pub-cdn.apitemplate.io/2022/12/212ebbf4-8051-446b-bc3a-1a225b2a3758.png").getBlob();
  // 给Blob设置文件名(可选,省略则默认使用URL中的文件名)
  imageBlob.setName("menu.png");
  DriveApp.getFolderById("1vb7ZzdhBfsK6t154Z2CR-RpBNEKvyPB6").createFile(imageBlob);
}

也可以使用显式指定二进制内容的重载(但不如直接传Blob简洁):

function download() {
  let response = UrlFetchApp.fetch("https://pub-cdn.apitemplate.io/2022/12/212ebbf4-8051-446b-bc3a-1a225b2a3758.png");
  DriveApp.getFolderById("1vb7ZzdhBfsK6t154Z2CR-RpBNEKvyPB6").createFile("menu.png", response.getContent(), MimeType.PNG);
}

补充说明

UrlFetchApp默认会自动跟随重定向,所以你最初的带参数API链接,只要修正createFile的用法,也能正常下载到正确的PNG文件。

内容的提问来源于stack exchange,提问作者Mathias Maes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:55:18