2012-05-12 8 views
1

Google Aps (GAS)에 스크립트를 쓰고 있으며 스프레드 시트에 사용자 (/ 작성자) (도메인 관리자)를 추가해야합니다. 다른 사용자."Google 문서 목록 API"를 통해 스프레드 시트에 작성자 추가

스크립트가 관리자 권한으로 실행되거나 호출됩니다.

먼저 "도메인 사용자를 가장하기 위해 Google Apps 관리자 액세스 권한"을 사용하고 그의 문서 (스프레드 시트) 목록을 가져오고 문서의 ID를받습니다.

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

이 부분은 잘 작동하고 원하는 아이디의를 얻을 수있다. 이제

, 내가 원하는 나는이 시도하고

이 문서에 자신 ([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]"은 문서의 ID입니다.

이것은 작동하지 않습니다.

아이디어가 있으십니까?

시간의 시간을 소비 한 후 세르지

답변

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"}; 
} 

내 Google 사이트에서 동일한 코드를 posetd있다. 여기를 살펴볼 수 있습니다. https://sites.google.com/site/appsscripttutorial/urlfetch-and-oauth

0

나는 이것을 결코 발견하지 못했습니다. 고맙습니다.

user = Session.getActiveUser(). getUserLoginId() 

는 또한 googleOAuth_에 내 도메인 값을 넣어
user + '/private/full/'

에 의해

'[email protected]/private/full/' 

:

나는 다음 (var에 URL = ...)를 수정 :

oAuthConfig.setConsumerKey ("mydomain.com"); 

oAuthConfig.setConsumerSecret ("xXxXxXxXxXxXxXxXx"); 

그리고 완벽하게 작동합니다!

도메인의 관리자가 조직의 문서 중 일부를 사용하여 (일단 권한을 부여한 후) 사용자를 대신하여 행동 할 수 있지만 사용자가 작성한 것은 매우 흥미로운 것 같습니다.

또한 사용자가 보안 사본과 같이 사용자에게주의를 기울이지 않고 (또는 전문 기술이 충분하지 않은 상태로) 액세스 할 수 있도록 관리자 권한으로 실행하는 사용자 리소스 (문서, 스프레드 시트 등) , ...

필자는 "Flubaroo"가젯과 마찬가지로 사용자 (교사)가 만든 Google 문서 도구 양식을 Google이 프로그래밍 한 그래픽 환경 (GUI)에서 평가하는 프로그램을 만듭니다. Google Apps Script (GAS)가있는 사이트

다시 한번 감사드립니다.

sergi

관련 문제