我想获取域中所有用户的日历详细信息。我正在尝试使用UrlFetchApp并将get请求发送到服务器。
var urlFetch = UrlFetchApp.fetch(url, fetchArgs);
我为此传递了所有必需的参数。但它提供 302 Moved Temporarily 服务器错误。有时它的工作但不总是。 要删除此问题,我必须再次向具有相同内容和参数的服务器发送get请求。当发送第一个获取请求时,它返回一个URL,会附加一个会话ID。 所以我需要用这个新网址发送请求。
我使用了以下代码:
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发送一个新的请求。 请给我任何解决这个问题的想法!
答案 0 :(得分:0)
这可以通过在字符串中转换服务器响应,然后拆分字符串以从段落中获取特殊文本来完成。