Web ページからテキストを取得してその文字列を処理する簡単なスクリプトを作成しようとしています。しかし、その Web サイトにはログインが必要です。その Web サイトへのログインに成功しました。これは私がログインした方法です:
var payload = {"name1":"val1","name2":val2"};
var opt ={"payload":payload,"method":"post"};
var respose = UrlFetchApp.fetch("http://website.com/login",opt);
ログイン後、ウェブサイトは私を配置しhttp://website.com/home
ます。確認response.getContentText()
したところ、 からのテキストが含まれているため、正常にログインできていることが確認できますhttp://website.com/home
。次に、の内容を取得してhttp://website.com/page
処理する必要があります。私は最初、スクリプトがそれ自体で Cookie を処理できると想定し、次の手順に進みました。
var pagedata = UrlFetchApp.fetch("http://website.com/page);//Did not work
それは明らかにpagedata.getContentText()
うまくいかず、最初にログインするように言われます。これは、Cookie が正常に渡されなかったことを示しています。
次に、ログイン中にサーバーが応答した Cookie を抽出し、この要求と一緒に送信しようとしました。
var cookie = response.getAllHeaders()['Set-Cookie'];
// variable cookie now contains a legitimate cookie.
// It contains 'JSESSIONID=blabla;Path=/' and
// it is the ONLY cookie that server responds.
ページリクエストでそのCookieを送信しようとしました。
var header = {'Cookie':cookie};
var opt2 = {"header":header};
var pagedata = UrlFetchApp.fetch("http://website.com/page",opt2);
コンテンツが再びログインするように言っているので、今でも Cookie が適切に送信されていないと思います。
Cookie を正しく渡していますか? リクエストで Cookie を送信する正しい方法についてサポートが必要です。