【问题标题】:Add an writer to a spreadsheet via "Google Document List API"通过“Google Document List API”将作者添加到电子表格
【发布时间】:2012-05-12 16:27:41
【问题描述】:

我正在 Google Aps (GAS) 中编写脚本,我需要将用户 (/writer)(域管理员)添加到另一个用户的电子表格中。

脚本正在管理员权限下运行/调用。

首先,我使用“Google Apps 管理访问权限来模拟域用户”,然后我得到了他的文档列表(电子表格)和文档的 ID。

var oauthConfig = UrlFetchApp.addOAuthService("docs"); oauthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken"); oauthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken? (...)

这部分工作正常并获得所需的 ID。

现在,我想将自己 (administrator@example.com) 添加到此文档中

我正在尝试这个:

var optAdvancedArgs = {
"contentType": "application/atom+xml",
"method": "POST",
"headers": {  "GData-Version": "3.0" }, 
              "oAuthServiceName": "docs", 
              "oAuthUseToken": "always",
           };

var url_set = "https://docs.google.com/feeds/" + 用户 + "/private/full/document:" + matriu2[0][6] + '/acl/user:administrator@example .com'

var 结果 = UrlFetchApp.fetch(url_set, optAdvancedArgs);

“user”是文档的所有者,活动用户(Session.getActiveUser().getUserLoginId())和“matriu2[nm][6]”是文档的Id。

这行不通,

有什么想法吗?

塞尔吉

【问题讨论】:

    标签: google-docs-api google-apps-script


    【解决方案1】:

    花了一个小时后,这是我得到的 此功能会将文档共享给您自己(域管理员)。 您可以更改 xml 中的其他参数以具有读取、写入权限等

    function shareDocumentToMe(){
      var base = 'https://docs.google.com/feeds/';
      var fetchArgs = googleOAuth_('docs', base);
      var writerID = Session.getEffectiveUser().getEmail();
      fetchArgs.method = 'POST';
      var rawXml = "<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gAcl='http://schemas.google.com/acl/2007'>"
          +"<category scheme='http://schemas.google.com/g/2005#kind' "
          +"term='http://schemas.google.com/acl/2007#accessRule'/>"
          +"<gAcl:role value='writer'/>"
          +"<gAcl:scope type='user' value='"+writerID+"'/>"
          +"</entry>";
      fetchArgs.payload = rawXml;
      fetchArgs.contentType = 'application/atom+xml';
      var url = base + 'user@yourdomain.com/private/full/'+yourDocumentID+'/acl?v=3&alt=json';
      var content = UrlFetchApp.fetch(url, fetchArgs).getContentText();
      Logger.log(content);
    }
    
    //Google oAuth
    function googleOAuth_(name,scope) {
      var oAuthConfig = UrlFetchApp.addOAuthService(name);
      oAuthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope="+scope);
      oAuthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken");
      oAuthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken");
      oAuthConfig.setConsumerKey("anonymous");
      oAuthConfig.setConsumerSecret("anonymous");
      return {oAuthServiceName:name, oAuthUseToken:"always"};
    }
    

    我在我的 Google 网站上设置了相同的代码。 你可以看看这里。 https://sites.google.com/site/appsscripttutorial/urlfetch-and-oauth

    【讨论】:

      【解决方案2】:

      我永远不会找到这个。非常感谢。

      我修改了以下内容(var url = ...):

      'user@yourdomain.com/private/full/'
      

      作者
      user + '/private/full/'

      在哪里

      user = Session.getActiveUser (). getUserLoginId ()
      

      还有在googleOAuth_我把我的域值​​:

      oAuthConfig.setConsumerKey ("mydomain.com");
      
      oAuthConfig.setConsumerSecret ("xXxXxXxXxXxXxXxXx");
      

      而且效果很好!

      我认为域管理员可以代表用户(一旦我们授予权限)处理组织的一些文档,但这些文档是由用户创建的,这非常有趣。

      还有用户资源(文档、电子表格等),以便程序无需用户注意(或您没有足够的专业知识)即可访问(以管理员权限运行),例如安全副本、 ...

      在我的例子中,我编写了一个程序来评估用户(教师)创建的 Google Docs 表单,就像小工具“Flubaroo”一样,但在由 Google 协作平台使用 Google Apps 脚本编写的图形环境 (GUI) 中(气体)。

      再次感谢您的宝贵时间。

      塞尔吉

      【讨论】:

        猜你喜欢
        • 2015-03-14
        • 1970-01-01
        • 2016-12-28
        • 1970-01-01
        • 1970-01-01
        • 2017-01-23
        • 2013-05-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多