我已經在過去的一個月裏做了很多的這個,所以我應該能夠幫助你,我們試圖所以首先你需要使用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)。在這種情況下,您需要提取值並將其發佈。
你好Abnishek拉姆,我面臨幾乎相同的問題,如OP,但我的用戶名和密碼不能被編碼。應用程序流程如下:用戶必須在html頁面的輸入字段中輸入他的「用戶名」和「密碼」,然後如果它們正確,用戶必須在應用程序和第三方網站上登錄。你能幫我解決這個問題嗎? – Valip
@PavelValeriu我不知道我理解你的要求。你能否詳細解釋一下,Logged Into App的含義是什麼?你在這裏如何使用谷歌應用程序腳本?我建議你創建一個新帖子。 –
我創建了一個新帖子,請在這裏查看http://stackoverflow.com/questions/37675406/google-script-authenticate-on-external-website – Valip