如何在Google Apps脚本中使用ACL与其他用户共享网站?

时间:2012-09-29 20:15:33

标签: google-apps-script google-apps

我是管理员用户。我想使用谷歌应用脚​​本将网站分享给其他用户,甚至是我的域名。我尝试过使用ACL并使用以下代码:

function shareSite(){


  var base = 'https://sites.google.com/feeds/';
  var fetchArgs = googleOAuth_('google', base);
  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='owner'/>"
      +"<gAcl:scope type='user' value='newOwnerEmail'/>"
      +"</entry>";

  fetchArgs.payload = rawXml;
  fetchArgs.contentType = 'application/atom+xml';
  var url=base+'/acl/site/<domain-name>/<site-name>'
  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("");
  oAuthConfig.setConsumerSecret("");
  return {oAuthServiceName:name, oAuthUseToken:"always",
  Host: 'sites.google.com',
  Authorization: 'OAuth',
  oauth_version:"1.0",
  oauth_nonce:"",
  oauth_timestamp:"",
  oauth_consumer_key:"",
  oauth_token:"",
  oauth_signature_method:"HMAC-SHA1", 
  oauth_signature:""};
}

我试过这段代码,它给出400(错误请求),有时给404(找不到站点)。 预期的服务器响应将是201。 如果有人知道其解决方案和其他方式,请与我分享。 谢谢

1 个答案:

答案 0 :(得分:0)

我建议使用内置的SitesApp服务来修改ACL。 Site.addCollaborator()应该做你想做的事。

https://developers.google.com/apps-script/class_site#addCollaborator