1

Google Apps スクリプトと OAuth 認証を使用して、ドメイン内のユーザーの Google カレンダーを他のドメイン内の別のユーザーと共有しようとしています。しかし、私はこのタスクを実行できません。ユーザーのすべてのカレンダー イベントを取得しましたが、共有できませんでした。任意のソリューションをいただければ幸いです。ありがとうございました

この問題の解決策は次のとおりです。

function calenderSharing(user1,user2){

    var scope = 'https://www.google.com/calendar/feeds/';
    var fetchArgs = googleOAuth_('calenders', scope);
    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:scope type='user' value='"+user2+"'></gAcl:scope>"+
      "<gAcl:role value='http://schemas.google.com/gCal/2005#owner'>  </gAcl:role></entry>"
    fetchArgs.method = 'POST';
    fetchArgs.payload = rawXml
    fetchArgs.contentType = 'application/atom+xml';

    try{
         var url='https://www.google.com/calendar/feeds/'+user1+'/acl/full'        
         var urlFetch=UrlFetchApp.fetch(url,fetchArgs)                         //Giving Permission To personal account as a owner
       }
    catch(err){
        var err1=err.toString()
        var ex='Exception: Request failed for  returned code 302'
        if(ex==err1.split('.')[0]){
              var tempCalenderUrl=[]
              tempCalenderUrl.id = err1.split('<A HREF="')[1];
              tempCalenderUrl.id = tempCalenderUrl.id.split('"')[0];
              var url=tempCalenderUrl.id
              try{
                  var urlFetch=UrlFetchApp.fetch(url,fetchArgs)   
                 }
              catch(err){}
         }         
     }
}

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(consumerKey);
  oAuthConfig.setConsumerSecret(consumerSecret);
  return {oAuthServiceName:name, oAuthUseToken:"always"};
}
4

2 に答える 2

0

代わりに、このユーザーが単にこの新しいカレンダーを購読できるようにするアプリを作成してみませんか? 必要なツールはすべてガス カレンダー サービスにあります。これは、そのようなアプリケーションの例です。

于 2012-10-16T15:00:40.633 に答える
0

Google Script ではできません。Calendar Script API は、(現時点では) カレンダーの共有をサポートしていません。回避策として、スクリプトを使用してカレンダー ID を取得し、UrlFetch (OAuth を使用) を使用して Google カレンダー API https://developers.google.com/google-apps/calendar/v3/reference/を呼び出します。認証を確認し、「get」を実行して、スクリプトから取得した ID に基づいてカレンダーを取得し、ACL を取得して、ドメイン外のユーザーと共有する新しいエントリを追加します。

簡単な解決策ではありません。ごめん。

于 2012-10-16T14:30:03.203 に答える