GAS初心者です。
GASを利用してマネーフォワードMEへログインしデータを取得しようと考えております。
まず、セッションIDを取得しようと考えておりますが、
下記のスクリプトではエラー:422となりログインできず。原因もわかりません。
どなたか、ご教授頂けますでしょうか?
※45行目のpostリクエストのfetchを行う際にエラーとなります。
どうぞよろしくお願い致します。
以下コード
function Login() { var account = PropertiesService.getScriptProperties().getProperty('account'); var password = PropertiesService.getScriptProperties().getProperty('password'); var response = UrlFetchApp.fetch("https://moneyforward.com/users/sign_in"); var regexp = /<input type=\"hidden\" name=\"authenticity_token\" value=\"(.*?)\" />/; var elements = response.getContentText().match(regexp); // cookieを取得 var headers = response.getAllHeaders(); var cookies = []; if ( typeof headers['Set-Cookie'] !== 'undefined' ) { // Set-Cookieヘッダーが2つ以上の場合はheaders['Set-Cookie']の中身は配列 var cookies = typeof headers['Set-Cookie'] == 'string' ? [ headers['Set-Cookie'] ] : headers['Set-Cookie']; for (var i = 0; i < cookies.length; i++) { // Set-Cookieヘッダーからname=valueだけ取り出し、セミコロン以降の属性は除外する cookies[i] = cookies[i].split( ';' )[0]; }; }; var headers = { 'Cookie' : cookies }; // POSTデータ var payload = { utf8: "✓", authenticity_token : elements[1], email : "account", headers : headers, password : password }; // POSTオプション var options = { method : 'post', //followRedirects : true , contentType: "application/x-www-form-urlencoded", //muteHttpExceptions : true, payload : payload, }; // アクセス先 var url = "https://moneyforward.com/session"; // POSTリクエスト var response = UrlFetchApp.fetch(url, options); var content = response.getContentText("UTF-8"); // レスポンスヘッダーからcookieを取得 var headers = response.getAllHeaders(); var cookies = []; if ( typeof headers['Set-Cookie'] !== 'undefined' ) { // Set-Cookieヘッダーが2つ以上の場合はheaders['Set-Cookie']の中身は配列 var cookies = typeof headers['Set-Cookie'] == 'string' ? [ headers['Set-Cookie'] ] : headers['Set-Cookie']; for (var i = 0; i < cookies.length; i++) { // Set-Cookieヘッダーからname=valueだけ取り出し、セミコロン以降の属性は除外する cookies[i] = cookies[i].split( ';' )[0]; }; }; var headers = { 'Cookie' : cookies }; options = { method : "post", headers : headers, followRedirects: true, //リダイレクトあり contentType: "application/x-www-form-urlencoded", muteHttpExceptions : true, }; var topUrl = "https://moneyforward.com/" response = UrlFetchApp.fetch(topUrl, options); var content = response.getContentText("UTF-8"); Logger.log(content); }