【问题标题】:Fetching a drive file image using Urlfetch App in GAS在 GAS 中使用 Urlfetch App 获取驱动器文件映像
【发布时间】:2021-02-12 15:46:58
【问题描述】:

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

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())
}

【问题讨论】:

  • 您是否检查过文档是这种新方式记录还是您认为应该有效的黑客攻击?
  • 获取文件是一种黑客行为。当链接放置在 IMG 标签中时,效果很好
  • 而且您确实了解这些链接不是静态的,它们可以并且确实会改变。
  • 是的,我知道,他们确实改变了。

标签: google-apps-script google-api google-drive-api google-api-js-client


【解决方案1】:

两件事

  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"))
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-14
相关资源
最近更新 更多