首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >谷歌应用程序脚本UrlFetchApp返回未经授权的错误401

谷歌应用程序脚本UrlFetchApp返回未经授权的错误401
EN

Stack Overflow用户
提问于 2018-08-24 01:03:39
回答 1查看 1.2K关注 0票数 2

这就是我使用的代码。

代码语言:javascript
复制
function doc_to_html(id)
{
  var url = "https://docs.google.com/feeds/download/documents/export/Export?id="+id+"&exportFormat=html";
var param = 
    {
      method      : "get",
      headers     : {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
      muteHttpExceptions:true,
    };
 var html = UrlFetchApp.fetch(url,param).getContentText();
  Logger.log(html);
}

它多次用于测试,但现在返回“未授权的错误401”。更准确地说,它正在返回:

代码语言:javascript
复制
<html>
<head>
<TITLE>Unauthorized</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Unauthorized</H1>
<H2>Error 401</H2>
</BODY>
</HTML>

我查阅了我能找到的关于UrlFetchApp的所有文档,没有看到任何配额或限制。我检查了脚本作用域,https://www.googleapis.com/auth/script.external_request已被授权。

EN

回答 1

Stack Overflow用户

发布于 2019-05-24 03:29:14

提供的作用域不足以访问文档。要访问它,还需要documents作用域。编辑清单文件使其具有以下作用域:

代码语言:javascript
复制
"oauthScopes": ["https://www.googleapis.com/auth/script.external_request","https://www.googleapis.com/auth/documents"],

或者在脚本中添加对Document App的虚拟调用:

代码语言:javascript
复制
DocumentApp.getActiveDocument();

根据Tanaike的评论,文档作用域似乎还不够,但电子表格作用域也是必需的,即使我们不访问电子表格。或者,需要Drive的只读作用域。

Spreadsheet+Document作用域:

清单:

代码语言:javascript
复制
"oauthScopes": ["https://www.googleapis.com/auth/script.external_request",
    "https://www.googleapis.com/auth/documents"
    "https://www.googleapis.com/auth/spreadsheets"],

或者在脚本中添加对文档App+SpreadsheetApp的虚拟调用:

代码语言:javascript
复制
//DocumentApp.getActiveDocument();
//SpreadsheetApp.getActive();

驱动器范围:

清单:

代码语言:javascript
复制
"oauthScopes": ["https://www.googleapis.com/auth/script.external_request",
    "https://www.googleapis.com/auth/drive.readonly"],

或者在脚本中添加对DriveApp的虚拟调用:

代码语言:javascript
复制
//DriveApp.getFiles()
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51990923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档