2014-02-07 71 views
6

我有我的谷歌雲端硬盤中的電子表格,我想從其他網站下載一個CSV,並把它變成我的電子表格。問題是我必須首先登錄到網站,所以我需要使用一些HTTP請求來做到這一點。谷歌Apps腳本登錄網站與HTTP請求

我發現this網站和this。如果這些網站中的任何一個都有答案,那麼我顯然不明白它們足以解決問題。有人能幫我解決這個問題嗎?我覺得第二個網站特別貼近我的需求,但我不明白它在做什麼。

要再次澄清,我想通過一個HTTP請求,登錄,然後對同一個網站,電話諮詢,與不同的URL,它是在調用來獲取CSV文件。

回答

5

我已經在過去的一個月裏做了很多的這個,所以我應該能夠幫助你,我們試圖所以首先你需要使用Chrome的開發者工具(或類似的東西),在這裏模擬瀏覽器的行爲,並記下瀏覽器所做的確切事情就像發佈的表單值,被調用的url等等。下面的例子說明了所用的一般techinique:

的第一步就是登錄到網站,並獲得會話cookie:

var payload = 
    { 
    "user_session[email]" : "username", 
    "user_session[password]" : "password", 
    };// The actual values of the post variables (like user_session[email]) depends on the site so u need to get it either from the html of the login page or using the developer tools I mentioned. 
    var options = 
    { 
    "method" : "post", 
    "payload" : payload, 
    "followRedirects" : false 
    }; 
    var login = UrlFetchApp.fetch("https://www.website.com/login" , options); 
    var sessionDetails = login.getAllHeaders()['Set-Cookie']; 

我們已經登錄到網站(爲了確認只要登錄sessionDetails並將其與Chrome設置的Cookie進行匹配)。下一步是純粹依賴於網站上,所以我將要給你一個普通的例子

var downloadPayload = 
     { 
     "__EVENTTARGET" : 'ctl00$ActionsPlaceHolder$exportDownloadLink1', 
     };// This is just an example it may or may not be needed, if needed u need to trace the values from the developer tools. 
var downloadCsv = UrlFetchApp.fetch("https://www.website.com/", 
            {"headers" : {"Cookie" : sessionDetails}, 
            "method" : "post", 
            "payload" : downloadPayload, 
            }); 
Logger.log(downloadCsv.getContentText()) 

該文件現在應該被記錄下來,那麼你可以使用興田GAS內置函數解析CSV和電子表格中的轉儲數據。

有幾點需要注意:

  • 我假定所有表單提交值是靜態的,可以是 硬編碼的情況下,這是不正確的,然後讓我知道,我會給你 一個函數可以從html中提取值。
  • 有些網站需要瀏覽器與證書一起發送令牌值(該值將出現在html)。在這種情況下,您需要提取值並將其發佈。
+0

你好Abnishek拉姆,我面臨幾乎相同的問題,如OP,但我的用戶名和密碼不能被編碼。應用程序流程如下:用戶必須在html頁面的輸入字段中輸入他的「用戶名」和「密碼」,然後如果它們正確,用戶必須在應用程序和第三方網站上登錄。你能幫我解決這個問題嗎? – Valip

+0

@PavelValeriu我不知道我理解你的要求。你能否詳細解釋一下,Logged Into App的含義是什麼?你在這裏如何使用谷歌應用程序腳本?我建議你創建一個新帖子。 –

+0

我創建了一個新帖子,請在這裏查看http://stackoverflow.com/questions/37675406/google-script-authenticate-on-external-website – Valip