ドメイン内のすべてのユーザーのカレンダーの詳細を取得したいと考えています。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 で新しいリクエストを送信したいと考えています。この問題を解決するアイデアを教えてください!