2012-05-12 52 views
1

我在Google Aps(GAS)中撰寫腳本,我需要將用戶(/作者)(域的管理員)添加到電子表格另一個用戶。通過「Google文檔列表API」將作者添加到電子表格

該腳本正在管理員權限下運行/調用。

首先,我使用「Google Apps管理訪問來模擬域的用戶」,我得到他的文檔列表(電子表格),並獲取文檔的標識。

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

這部分工作正常,並得到想要的ID的。

現在,我想添加到我自己([email protected])這個文件

我想這一點:

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:admini [email protected]'

var result = UrlFetchApp.fetch(url_set,optAdvancedArgs);

「user」是文檔的所有者,活動用戶(Session.getActiveUser()。getUserLoginId())和「matriu2 [nm] [6]」是文檔的標識。

這不行,

任何想法?

塞爾吉

回答

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 + '[email protected]/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

0

我永遠不會找到這個。非常感謝你。

我修改了以下(VAR URL = ...):

'[email protected]/private/full/' 

通過
user + '/private/full/'

其中

user = Session.getActiveUser(). getUserLoginId() 

,並在googleOAuth_我把我的域值:

oAuthConfig.setConsumerKey ("mydomain.com"); 

oAuthConfig.setConsumerSecret ("xXxXxXxXxXxXxXxXx"); 

它的功能完美!

我認爲一個域的管理員可以代表用戶(一旦我們獲得許可)與組織的一些文檔一起工作,但是已經由用戶創建,這非常有趣。

還有用戶資源(文檔,電子表格,...),以便程序可以訪問(以管理員權限運行)而無需用戶注意(或者您沒有足夠的專業知識),例如安全副本,...

就我而言,我製作了一個程序來評估Google Docs表單是由用戶(老師)創建的,就像小工具「Flubaroo」一樣,但是在由Google編程的圖形環境(GUI)中使用Google Apps腳本(GAS)的網站。

再次感謝您的時間。

Sergi

相關問題