Gmail概ね満足してるんだけど、スレッド表示のON/OFF切り替えが超面倒なのなんとかならんかね?基本はスレッドでいいんだけど、さっき届いたメールどこだっけ?てのが一度既読にするとすぐ見失ったり、何月何日何時頃送ったメールだよとか言われてもリストからすず時間で探せないのが不便。
受信トレイの上部分にタブもしくはチェックボックスとかで常に表示されてていつでも即座に切り替えられると便利なのになぁ。
と思ったのがキッカケ。
色々試してみた結果とりあえずスレッド表示のON/OFFがブックマークレットで出来るようになった!
※ただしまだハックが足らないので手間が必要…。
暫定コード
とりあえずまだ試行錯誤中で完全コピペで使えるものじゃないけど以下の様なコードでスレッド表示ON/OFFが切り替えられる事が分かってきた。
!function(){
function enableGThread(enabled,cb){
var q_ik = "0d728ef8ba";
var q_at = "AF9bupM2wS8R_VjW04xAMsAKqlpNG-NkAA";
var cb = cb || function(){};
var x = new XMLHttpRequest();
x.onreadystatechange = function(){
if(x.readyState == 4 && x.status == 200){
cb();
}
};
x.open("POST", location.pathname + "?ik=" + q_ik + "&at=" + q_at + "&view=up&act=prefs&rt=c");
x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
x.send("p_bx_vmb=" + (enabled?"0":"1"));
}
//enableGThread(true, function(){location.reload()}); //ONにする
enableGThread(false, function(){location.reload()}); //OFFにする
}()
これは設定ページの保存するボタンを押した時に投げてるリクエストから不要なパラメータとかを最小限まで削って出来たリクエストです。一応コレでうまく動くことは確認できたんだけど1つ問題が…。
課題
上記コードのクエリを構築してる中で ik
と at
に入ってる謎の値、これがなんだかまだ分かってません。
恐らくログイン中のセッションに紐付いててCSRFトークンみたいなやつだと思う。これは各自のアカウントでデベロッパツールのネットワークとか開きながら一回設定の保存ボタンを押してみるとその時のクエリパラメータから取得が出来る。設定画面を開くたびに毎回変わるみたいだけどでも実は古い値を使いまわしてもちゃんと機能する。
なのでとりあえず一回コピペで取得できたらそれを上記コードに埋め込んでおけば暫く使えるみたいよ。
誰かこの値の取得方法or作り方をもう少しGmailのコード追って調べてくれたら嬉しいな☆