2012-09-29 75 views
1

我想獲取域中所有用戶的日曆詳情。我試圖通過使用UrlFetchApp併發送請求到服務器來做到這一點。如何從存儲在變量中的HTML標記中獲取值?

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

我通過了所有必需的參數。但其給出302暫時移動服務器錯誤。有時它的工作,但並不總是。 爲了消除這個問題,我必須再次發送一個獲取請求到相同的內容和參數的服務器。當發送第一個獲取請求時,它返回一個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=?'}; 
} 

當我打印ERR價值的給人:

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發送新網址的新請求。 請給我任何想法來解決這個問題!

回答

0

這可以通過將字符串中的服務器響應轉換爲字符串,然後拆分字符串以從段落中獲取特殊文本來完成。

相關問題