在 GAS 中使用 Urlfetch 应用程序获取驱动器文件图像

Fetching a drive file image using Urlfetch App in GAS

我找到了一种使用文件 ID 访问潜水图像的新方法。图片文件已 public 共享以供测试

https://lh3.google.com/u/0/d/1wJsovhXjWZM5qfyh3_VvJKODxw1DWQG_=w320-h200-k-iv1

这 url 会产生 302,然后完美呈现浏览器图像。

但是当我 运行 使用 URLFetch 时它给我错误 400。那是一个错误。 您的客户发出了格式错误或非法的请求。这就是我们所知道的。

我试过

function myFunction() {
    var response = UrlFetchApp.fetch("https://lh3.google.com/u/0/d/1wJsovhXjWZM5qfyh3_VvJKODxw1DWQG_=w320-h200-k-iv1", {
        'followRedirects': true,
        'muteHttpExceptions': true,
        'headers': {
            'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
        }
    })
    DriveApp.createFile(response.getBlob())
}

两件事

  1. 如果您获取可公开访问的 URL,则您不需要 进行身份验证。只需删除以下行:
        'headers': {
            'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
        }
  1. 如果您尝试获取重定向 URL https://lh3.google.com/u/0/d/1wJsovhXjWZM5qfyh3_VvJKODxw1DWQG_=w320-h200-k-iv1",您将得到以下结果:

如果您想获取实际图像,则需要获取图像的实际 URL:

function myFunction() {
  var response = UrlFetchApp.fetch("https://lh3.googleusercontent.com/fife/ABSRlIr3o6GAAI3eXS8cz1Z9bWEkLp-D6RhKP8NDUfH81qWSIVA9Jj2XYE5XRifQ1-PZAPKEeH9t-0eqPCY6u_mD87pZ_hsTM9atsTL6rpDW5uZQgWVXH-UHuEMZspXRnYeZdZ87r9KQ4_YeO7z55p7qBnJeerzOaP3K_qhbEjCGpx2Eb5ln6gpvgaxAdUdV5HhUtw5d821iiod8JFNWqfiq7uGK0mvLKqUl7ZKIskhYBYW7G7r1uz5H-7DAymiwFQtQ6d2dUrWRWmms0u7O7Q5TSJHXt2HxhibEpgsFxBAK17GAmOTUa3bii3VoGifUXlKlGU1QAKH_i5ttFZn_Bbak2RzivY6QC1uDG-LgirWMzTT-2zqZcIM115qSDzrfktDaryHxBhIrUVvhrlWJ5j3QaRfUHh3__HSDgkm_Xe7-QCD3PuEYOgjxAsaLQoD3tdCywfKBWAT0crHJtTFQxtWmwR5RwNeLbFrzoeCEvVhZcaaYupC6Hwrtz8WHExAMnDHojXhqXCAwNSVYVzFVnxiigbZvl6UbSqXYsBqm_DLYlftCZ7pr28pkCnn_gKkbqitzIb-ei0mnOPFjqmMCAstLTTh4H7buZrAVvZZeYRe8xl9ypkAal_0z81L7dx3qVzCtFn6JuCRSZnlIFVseDURpFL4vDB6jqXoaEmwXt-ajA9MxefprFo6ujAdjFr_sUzHboBCfz9r3hPhvO21Qb2R2rnKGEpDRUuXr7Q=w320-h200-k-ft", {
    'followRedirects': true,
    'muteHttpExceptions': true,
  })
  Logger.log(response.getResponseCode());
  DriveApp.createFile(response.getBlob().setName("blob from url"))
}