我尝试使用 google appscript 下载图像,但 response.getAs() 或任何其他函数总是 returns 4 字节作为 Blob。为什么?

i have tried downloading an image using google appscript but the response.getAs() or any other functions always returns 4 bytes as Blob. why?

我尝试使用 google appscript 下载图像,但 response.getAs() 或任何其他函数总是 returns 4 字节作为 Blob。

在 google 表单中,我尝试使用 appscript 从互联网添加图像项并下载它以避免进一步的 URLFetch 调用。

从磁盘显示时(对于从 Google 驱动器加载的离线文件),它工作得非常好。但是,当第一次从互联网上加载时,它失败了。

异常:无法添加图片,请稍后重试。

文件 blob 始终只有 4 个字节

有人可以帮忙吗。

文件夹 - google 驱动器中用于保存文件的目标文件夹 fileName - 下载图像的文件名 fileURL - 图片的 public url

function downloadImage(folder, fileName, fileURL) {
  var response = UrlFetchApp.fetch(fileURL);
  if(response.getResponseCode() == 200){
    var fileBlob = response.getAs("image/jpeg");
    var file = folder.createFile(fileName+".jpeg",fileBlob,MimeType.JPEG);
    return file;
    debugger;  // Stop to observe if in debugger
  }else{
    Logger.log("Whats this now???");
  }
}

该文件的大小为 400 KB,但它不适用于我尝试下载的任何图像。

您正在使用方法 createFile(name, content, mimeType) 并将 Blob 作为内容传递,因此大小为 4 字节。此方法的内容应为字符串类型。

您想使用 createFile(blob) method, and to the returned file, assign a name

示例:

function downloadImage(folder, fileName, fileURL) {
  var response = UrlFetchApp.fetch(fileURL);
  if(response.getResponseCode() == 200){
    var fileBlob = response.getAs("image/jpeg");
    var file = folder.createFile(fileBlob);
    file.setName(fileName);
    return file;
  }else{
    console.log(response.getAllHeaders())
  }
}