1

ドメイン内のすべてのユーザーのカレンダーの詳細を取得したいと考えています。UrlFetchApp を使用してこれを実行し、取得要求をサーバーに送信しようとしています。

var urlFetch = UrlFetchApp.fetch(url, fetchArgs);

これに必要なすべてのパラメーターを渡しました。しかし、それは302 Moved Temporarilyサーバーエラーを出します。時々うまくいきますが、常にではありません。この問題を解決するには、同じコンテンツとパラメーターを使用してサーバーに get 要求を再度送信する必要があります。最初に get リクエストを送信して URL を返すと、セッション ID が追加されます。したがって、この新しい URL でリクエストを送信する必要があります。

これには次のコードを使用しました。

function getCalender(){
    var users = UserManager.getAllUsers(); 
     var scope = 'https://www.google.com/calendar/feeds/';
     var fetchArgs = googleOAuth_('calender', scope);

     for(i=0;i<users.length;i++ ){
          var url ='https://www.google.com/calendar/feeds/'+users[i].getEmail()+'/private/full';

          try{
          var urlFetch=UrlFetchApp.fetch(url,fetchArgs)

         }
          catch(err){
            Logger.log(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("");
  oAuthConfig.setConsumerSecret("");
  return {oAuthServiceName:name, 
  oAuthUseToken:"always",
  content:'application/atom+xml', 
  method:"GET",
  Authorization:'GoogleLogin auth=?'};
}

エラー値を出力すると、次のようになります。

Exception: Request failed for  returned code 302. Server response: <HTML>
<HEAD>
<TITLE>Moved Temporarily</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Moved Temporarily</H1>
The document has moved <A HREF="https://www.google.com/calendar/feeds/<email-id>/private/full?gsessionid=y1oQCjGH3LqTKJgyh9BlhA">here</A>.
</BODY>
</HTML>

この移動した ID を取得して、新しい URL で新しいリクエストを送信したいと考えています。この問題を解決するアイデアを教えてください!

4

1 に答える 1

0

これは、サーバーの応答を文字列に変換し、文字列を分割して段落から特別なテキストを取得することによって行われます。

于 2012-10-05T11:10:49.410 に答える