首页 文章

如何使用Apps脚本获取当前登录用户的Google文档列表?

提问于
浏览
0

我正在使用Google网站上的Apps脚本,我正在尝试使用Oauth对作为活动用户的小工具进行身份验证,以显示活动用户文档列表 . 我发现有几个谷歌小组讨论询问了这个没有答案,希望我能在这里得到答案 . 这是我的代码:

var oauthConfig = UrlFetchApp.addOAuthService(“gDocs”); oauthConfig.setAccessTokenUrl( “https://www.google.com/accounts/OAuthGetAccessToken”); oauthConfig.setRequestTokenUrl( “https://www.google.com/accounts/OAuthGetRequestToken?scope=https://docs.google.com/feeds/”); oauthConfig.setAuthorizationUrl( “https://www.google.com/accounts/OAuthAuthorizeToken”); oauthConfig.setConsumerKey( “myDomainName”); oauthConfig.setConsumerSecret( “myCosumerSeceret”);

var options = {“method”:“GET”,“headers”:{“GData-Version”:“3.0”},“oAuthServiceName”:“gDocs”,“oAuthUseToken”:“always”};

var results = UrlFetchApp.fetch(“https://docs.google.com/feeds/default”,options);

此时代码不会运行,并显示包含小工具的页面:执行该操作需要授权 .

任何帮助将不胜感激 .

谢谢James Krimm

5 回答

  • 1

    无法访问 active user 数据 . 已发布的应用程序脚本(如站点上)在脚本所有者的帐户下运行,名为 effective user . 并且,作为安全问题,脚本所有者无权访问 active user 的任何数据 .

    那么,@ claudio建议(使用内置DocsList)是不可能的 .

    Unless 我们谈论的是Google Apps域(而不是常规的消费者帐户),脚本所有者是域管理员 . 在这种情况下,他可以使用Google文档列表数据API来模拟其域中的任何用户 .

    无论哪种方式,消费者密钥和秘密应始终是“匿名的”,无论这种情况如何 .

  • 0

    要使用3-legged OAuth执行授权,您必须使用'anonymous'作为ConsumerKey和ConsumerSecret:

    oauthConfig.setConsumerKey("anonymous");
     oauthConfig.setConsumerSecret("anonymous");
    

    另请注意,正确的Feed网址为 https://docs.google.com/feeds/default/private/full .

    但是,如果您的目标是获取活动用户的文档列表,为什么不使用Apps脚本提供的DocsList服务?他们还会为您解析结果 .

    https://developers.google.com/apps-script/service_docslist

  • 0

    我有一个Google脚本OAuth库https://sites.google.com/site/scriptsexamples/custom-methods/google-oauth,这将使OAuth部分减少痛苦 .

    以及当前正在开发的DriveSrevice Library的一些源代码,它们将达到Google Script中缺少的点数 . https://sites.google.com/site/scriptsexamples/custom-methods/driveservice

  • 0

    此特定错误可能与OAuth无关,但与将DocsList添加到应用程序有关 .

    见:https://developers.google.com/apps-script/troubleshooting#common_errors

    执行该操作需要授权 . 此错误表示脚本缺少运行所需的授权 . 在脚本编辑器中运行脚本或从自定义菜单项运行脚本时,将向用户显示授权对话框 . 但是,当脚本作为服务运行,嵌入了Google协作平台页面或从触发器运行时,无法显示对话框并显示此错误 . 要授权脚本,请打开脚本编辑器并运行任何功能 . 要避免此错误,请记住在向脚本添加新服务或功能后,在脚本编辑器中运行一次脚本 .

  • 0

    这里的答案是不正确的 . 你可以做你需要的,但不能直接使用Oauth . 而是使用“作为当前用户运行”选项而不是脚本所有者发布Apps脚本 . 然后使用DriveApp的DocsList获取用户文件 . 这里的关键是将服务发布为“以访问应用程序的用户身份运行” .

相关问题