Gmailの「未読だけフィルタ」ボタンを作ってみた

こんにちは、平野です。

会社ではGmailを使っているのですが、週明けなど大量にメールが溜まっている時に、「特定のラベルがついたメールに限った未読一覧が欲しい!」ということがあります。 もちろん、そのラベルだけを表示させる検索と、未読だけを表示させる検索を組み合わせればできるのですが、頻度が高いとラクしたくなりますよね。

上記に関連する面倒なことを改めて考えてみた結果、「現在表示中のものから、未読のものだけにフィルタリングする」ということができれば、汎用性高く上記の問題を解決できるという結論に落ち着きました。 そして少し調べてみたらできそうだったので、やってみました。

参考にさせて頂いたページ

早速Google先生に聞いてみたところ、以下のようなページを教えて頂きました。

Gmail で未読メールを一覧表示するブックマークレット

こちらで公開されているのは、「Gmailを開いている時押すと受信トレイの未読に移動するブックマークレット」というものです。 普通のブックマークと違うのは、Gmailの画面にいる時にだけ有効という点です。

さて、こちらの手法は直接的には私がやりたいこととは違っているのですが、ブックマークレットというものを使ってURLが操作できるということがわかってしまったので、あとは置換の内容さえいじってしまえば何でもできるな、となるわけです。

できた

ということで、現在のアドレスを置換する形でブックマークレットを作成してみました。

未読 ←これをブックマークバーにドラッグ&ドロップ

Chromeでは上記のリンクの部分をブックマークバーにドラッグ&ドロップすれば登録完了です。 他のブラウザ等でも、リンク先のアドレスを丸ごとブックマークに登録すれば同様に動作するはずです。 なお、「未読」となっている名前の部分は自由に変えて大丈夫です。

参考までに、コードの内容としては以下のようなものです。

javascript:void(location.href.match(/mail\.google\.com/)&&location.href=location.href.replace("inbox","search/").replace("label/","search/label:")+"+label:unread"))

アドレスの最後の部分を現在の状況に従って少し置換していますが、本質的には末尾に+label:unreadを付けているだけです。

挙動例

特定のラベルを選択した状態で、「未読」ブックマークレットをクリックすると

「ラベル選択 + 未読」というフィルターの追加として動作しています。

また、私は隣の「Gmail」というブックマークには、受信トレイのうち「ラベルなし」だけを表示するという状態で開くようにしていますが、この状態で「未読」ブックマークレットを押した場合も、

「ラベルなし + 未読」のものが選べます。

他にも、「受信トレイ」をクリックした状態(受信トレイ内の全部のメールが表示される)に適用されるのはもちろん、単語で検索した状態でも同様に未読だけを表示させることができます。

おわりに

ブックマークレットを使って、現在表示させている受信トレイの状態に対して「未読だけに絞るフィルタ」を実現できました。

私が使用するような場面においては、掲示した置換処理だけで全て問題なくフィルタリング処理が実現できています。 しかし置換のルールはかなり緩いので思わぬところで暴発してしまうことがあるかもしれません。 使用してみて何かあればコメントなど頂けたら幸いです。

「Gmailは従来のメーラーでできたことができない!」と感じてしまう場面が時々あります。 しかし上記のように、メールの絞り込みなども全てURLによって実現していることがわかったので、自分で柔軟に操作できる楽しみもあるのだとわかりました。 ブックマークレット自体触るのが初めてでしたが、この手法を使えば他にも色々なことができそうだな、と勉強になりました。 今後もこういう機能ができないかな?と思ったらやり方がないか探って便利にしていきたいです。