pophope
@pophope

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

【GAS 】set-cookieが複数ある時の特定の値の取り方

現在の状況

GASを使ったloginの実験をしています。
色んなサイトを参考に以下のコードとなりました。

chromeのデベロッパー→networkで実際にログインをすると
set-cookieの中に、accessTokenやaccessTokenSecretの値がありそれを使えばログインができそうです。

image.png

ただset-cookieが複数あるので、下のコードで
return response.getHeaders()["Set-Cookie"];
をしても画像の一番下のacp=deletedの値しか取れないです。

accessTokenが入ってるset-cookieを取りたい場合、どう修正したら良いでしょうか

function routine1() {
    //ログインURL
    const url = 'https://typing.twi1.me/user/login-mail/';
    //ログイン後の遷移先URL
    const contentUrl = 'https://typing.twi1.me/user/first-step'
    //ログイン時のレスポンスヘッダーにあるSet-Cookieデータを取得
    const cookie = login(url);
    //ログイン後の遷移先ページのHTMLデータを取得
    const content = getContent(contentUrl, cookie)
    console.log(content);
}
function login(url) {
    //ログインID及びパスワード
    const formData = {
        "accountId": "メールアドレス",
        "acp": "パスワード"
    }
    //UrlFetchAppのオプション
    const options = {
        "method": "POST",
        "payload": formData,
        "followRedirects": false
    };
    //データを取得
    const response = UrlFetchApp.fetch(url, options);
    //レスポンスヘッダーにあるSet-Cookieデータを取得

    return response.getHeaders()["Set-Cookie"]; // cookie
}
function getContent(url, cookie) {
    //Set-Cookieデータをヘッダーに追加
    const headers = { 'Cookie': cookie }; 
    //UrlFetchAppのオプション
    var options = {
        method: 'GET',
        headers: headers,
        followRedirects: false,
    };
    //データを取得
    const response = UrlFetchApp.fetch(url, options);
    return response.getContentText();
}
0

1Answer

response.getAllHeaders()["Set-Cookie"] で、すべての Set-Cookie ヘッダの値が配列で取得できます。

1Like

Your answer might help someone💌