我正在使用Google Aps(GAS)编写脚本,我需要将用户(/编写者)(域管理员)添加到另一个用户的传播中。
脚本在管理员权限下运行/调用。
首先,我使用“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/”+ user +“/ private / full / document:”+ matriu2 [0] [6] +'/ acl / user:administrator @ example .com“之间
var result = UrlFetchApp.fetch(url_set,optAdvancedArgs);
“user”是文档的所有者,活动用户(Session.getActiveUser()。getUserLoginId())和“matriu2 [nm] [6]”是文档的ID。
这不起作用,
有什么想法吗?
塞吉
答案 0 :(得分: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
答案 1 :(得分:0)
我永远不会发现这个。非常感谢你。
我修改了以下内容(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 Sites使用Google Apps脚本编写的图形环境(GUI)中(GAS)。
再次感谢您的时间。
塞吉