【问题标题】:Authorization with UrlFetchApp使用 UrlFetchApp 进行授权
【发布时间】:2020-03-14 03:41:15
【问题描述】:

我已经阅读了很多问题,但没有找到我的问题。我想访问一个远程文件并将其保存到我的 GDrive。 Google 拒绝 URL 中包含 user/pswd 的 URL。没有授权,代码如下:

fURL = "https://example.com/file.pdf";
finfo = downloadFile(fURL,'PDFs');

function downloadFile(fileURL,folder) {
  var response = UrlFetchApp.fetch(fileURL, {muteHttpExceptions: true});
  var rc = response.getResponseCode();
[...]

可以预见,这会产生 401 Unauthorized 错误。

所以,我在调用中添加了选项:

fURL = "https://example.com/file.pdf";
finfo = downloadFile(fURL,'PDFs');

function downloadFile(fileURL,folder) {
  var options =
      {
        method : "get",
        headers : {
          "Authorization": "Basic base64userpswd"
        },
        muteHttpExceptions : true
      };
  var response = UrlFetchApp.fetch(fileURL, options);
  var rc = response.getResponseCode();
[...]

仅此更改,Google 现在报告:

例外:未提供值的属性:url(第 26 行,文件“代码”)

我已经尝试过,无论是否引用选项键,都一样。由于包含选项,我看不到 fileURL 参数是如何丢失的。抱歉,如果它真的很愚蠢,但我很难过。

【问题讨论】:

  • 虽然我无法理解Exception: Attribute provided with no value: url (line 26, file "Code")line 26 和你的实际脚本,请问运行脚本的方法是什么?例如,您在脚本编辑器中运行问题中的downloadFile 函数,首先,finfo = downloadFile(fURL,'PDFs'); 使用参数运行,并且function downloadFile(fileURL,folder) {} 也没有参数运行。您的问题与此有关吗?
  • 对不起,这是我第一次使用gscript接口。我在左侧列出了许多脚本,在处理最后一个脚本时,当我单击 RUN 时,我没有意识到它总是在顶部运行脚本 #1。现在一切都好,谢谢。
  • 感谢您的回复。我很高兴你的问题得到了解决。如果您的问题已解决,您可以将其发布为答案吗?这样,它对遇到相同问题的其他用户很有用。

标签: google-apps-script basic-authentication urlfetch


【解决方案1】:

我一直在对我的脚本进行调整,但无论如何都无法得到相同的响应,这让我感到困惑。但这是我第一次使用 gscripts。我在左侧列出了许多脚本,在处理最后一个脚本时,当我单击 RUN 时,我没有意识到它总是在顶部运行脚本 #1。一旦我将我的脚本隔离为项目中唯一的一个,它就会按预期运行。

【讨论】:

    猜你喜欢
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 2015-10-07
    • 2015-07-17
    相关资源
    最近更新 更多