我书面方式在谷歌APS(GAS)的脚本,我需要一个用户(/作家)(域管理员)添加到另一个用户的spreadsheed。
该脚本运行/下管理员privilegies调用。
首先,我用“谷歌Apps的管理权限冒充域的用户”,我得到他的证件(电子表格)的名单,我得到的文件的ID。
VAR的OAuthConfig = UrlFetchApp.addOAuthService( “文档”); 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/” +用户+ “/私人/充满/文件:” + matriu2 [0] [6] + '/acl/user:administrator@example.com'
VAR结果= UrlFetchApp.fetch(url_set,optAdvancedArgs);
“用户” 是文件的拥有者,活动用户(Session.getActiveUser()。getUserLoginId())和 “matriu2 [nm]的[6]” 为文档的ID。
这不工作,
有任何想法吗 ?
塞尔吉
花一个小时的时间后,这里是我得到了这个功能将共享文件给自己(域管理员)。 你可以改变其他参数在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"};
}
我已经posetd在我的谷歌网站相同的代码。 你可以在这里看看。 https://sites.google.com/site/appsscripttutorial/urlfetch-and-oauth
我永远也不会发现这一点。 非常感谢你。
我修改了以下(VAR URL = ...):
'user@yourdomain.com/private/full/'
通过
user + '/private/full/'
哪里
user = Session.getActiveUser (). getUserLoginId ()
而且在googleOAuth_
我把我的域值:
oAuthConfig.setConsumerKey ("mydomain.com");
oAuthConfig.setConsumerSecret ("xXxXxXxXxXxXxXxXx");
它完美的作品!
我认为这是非常有趣的是,域的管理员可以代表用户的行为(一旦我们获得许可)与一些组织的文件,但已经由用户创建的。
此外用户资源(文档,电子表格,......),以便程序可以访问(使用管理员权限运行),而无需关注(或者你没有足够的专业知识)的用户,如安全的副本,...
就我而言,我做出评估谷歌文档形式的方案已经由用户(教师)一样通过与谷歌Apps脚本谷歌网站(GAS)编程的小工具“Flubaroo”,但在图形环境(GUI)创建。
感谢你的宝贵时间。
塞尔吉