Gmailで「●月●日」の検索クエリを作るブックマークレット

取材ライターをしていると日々大量のプレスリリースがメールで届きます。その中から、取材のネタになりそうな発表会やイベントの案内を探すのに苦労していました。

例えば、「4月10日の新製品発表会の案内」というメールを探したいとき、Gmailの検索窓に「4月10日」と手入力するのは面倒ですし、うっかり日付を間違えてしまうこともあります。

そこで、今日から1週間分の日付を自動的に入力してくれるブックマークレットを作りました。

1週間分の日付を検索するGmailクエリを作成するブックマークレット

ブックマークレットとは、ブラウザのブックマークに登録しておける短いJavaScriptプログラムのことです。

このブックマークレットをクリックすると、自動的にGmailの検索窓に「4月10日」「4月11日」…といった具合に、1週間分の日付が入力されます。あとは「発表会」や「説明会」などのキーワードを追加するだけで、目的のメールを簡単に見つけ出すことができます。

今日から1週間の日付をGmailで検索するブックマークレット

このブックマークレットは、今日から1週間の日付を「●月●日」形式で生成し、それらの日付を含む「発表会」または「説明会」というキーワードが含まれるメールを検索します。

検索クエリの(発表会 OR 説明会)の部分は、検索したいキーワードに応じて適宜置き換えてください。例えば、「セミナー」や「イベント」などの単語を追加したり、別のキーワードに変更したりすることができます。

javascript:(function(){
  var today = new Date();
  var endDate = new Date(today.getTime() + 7 * 24 * 60 * 60 * 1000);
  var monthNames = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'];
  var dateStrings = [];

  for (var d = today; d <= endDate; d.setDate(d.getDate() + 1)) {
    var month = monthNames[d.getMonth()];
    var day = d.getDate() + '日';
    dateStrings.push(month + day);
  }

  var searchQuery = '("発表会" OR "説明会") AND ("' + dateStrings.join('" OR "') + '")';
  window.location.href='https://mail.google.com/mail/u/0/#search/' + encodeURIComponent(searchQuery);
})();

細かめな使い方の説明 ブックマークレットを使ってGmailで今日から1週間の日付を検索する手順は以下の通りです。

ブックマークレットの登録手順
  1. まず、上記のコードをコピーします。
  2. ブラウザのブックマークバーで右クリックし、「ページを追加」または「新しいブックマークを追加」を選択します。
  3. 名前の欄に、このブックマークレットの名前を入力します。例えば、「1週間の発表会・説明会検索」などです。
  4. URLの欄に、コピーしたコードを貼り付けます。
  5. ブックマークを保存します。
  6. 作成したブックマークレットをクリックします。

自動的に検索結果のページに遷移します。検索窓には、今日から1週間分の日付と、「発表会」と「説明会」のキーワードが入力された状態になっています。 必要に応じて、検索キーワードを変更します。例えば、「セミナー」や「イベント」などを追加したり、「発表会」や「説明会」を削除したりします。 Enterキーを押すか、検索ボタンをクリックして、検索を実行します。

複数アカウント利用時はユーザーIDを調整する

注意点として、コードの中にある https://mail.google.com/mail/u/0/#search/ の u/0/ の部分は、Gmailのユーザー IDを表しています。

u/0/ は、最初にログインしたアカウント(デフォルトのアカウント)を表します。 u/1/ は、2つ目にログインしたアカウントを表します。 u/2/ は、3つ目にログインしたアカウントを表します。

以降も同様に、ログインしたアカウントの順番に応じて、ユーザー IDが割り当てられます。 もし、デフォルト以外のアカウントで検索を実行したい場合は、コードの u/0/ の部分を適切なユーザー IDに変更してください。

ブックマークレットのコードは、JavaScriptの知識がなくても、検索したいキーワードを変更するだけで簡単にカスタマイズできます。自分によく届くメールの内容に合わせて、キーワードを変更してみてください。

指定した日付から1週間をGmailで検索するブックマークレット

次に、開始日を指定してその日から1週間の日付を検索するブックマークレットも作成しました。

指定された日付から1週間分の日付でクエリを作成するブックマークレット

javascript:(function(){  
    var startDateString = prompt("開始日を入力してください (MM/DD形式):");  
    var currentYear = new Date().getFullYear();  
    var startDate = new Date(currentYear + "/" + startDateString);  
    var endDate = new Date(startDate.getTime() + 7 * 24 * 60 * 60 * 1000);  
    var dateStrings = [];  
    for (var d = new Date(startDate); d <= endDate; d.setDate(d.getDate() + 1)) {    
        var month = d.getMonth() + 1;    
        var day = d.getDate();    
        dateStrings.push('"' + month + "月" + day + "日" + '"');  
    } 
    var searchQuery = '("発表会" OR "説明会") AND (' + dateStrings.join(' OR ') + ')';  
    window.location.href='https://mail.google.com/mail/u/0/#search/' + encodeURIComponent(searchQuery);
})();

このブックマークレットの使い方は以下の通りです。

ブックマークレットをクリックすると、開始日の入力を求められます。 開始日を「MM/DD」形式(例:04/01)で入力すると、その日から1週間分の日付を「●月●日」で検索します。

Gmailでの完全一致検索、難しくない?

このブックマークレットを作ったことで検索が劇的に効率化!と言いたいところですが、残念ながらそうでもありません。 Gmailの完全一致検索には課題があるようで、「●月●日」で完全一致検索しているつもりでも、「月」や「日」を含む関係のないメールがヒットしてしまう場合があります。検索するメールの件数が多いほど、うまく検索できないようです。 より確実に目的のメールを検索するには、Google WorkspaceのGmail APIを利用する方法もありますが、有料の契約かつ技術的なスキルがあるユーザーのみが対象と、なかなかハードルが高めです。

Gmailの検索機能を効果的に使いこなすための他の方法やアイデアがあれば、ぜひコメントなどで教えていただけると嬉しいです。