タイムスタンプでGmailメッセージを照会することは可能ですか?


13

その日よりも細かい範囲ですべてのGmailメッセージを検索することは可能ですか?

たとえば、10月4日の午後3時から午後5時までのすべてのチャットメッセージを検索できますか?それはどのように見えますか?

Gmailの高度な検索リファレンスを見ると、特定の時間に言及していることに気付きましたが、形式を指定していない可能性が高く、おそらくサポートされていませんが、間違った形式で検索を入力している場合に備えて確認することを考えました。 。

例: after:2004/04/16 before:2004/04/18

意味: 2004年4月16日から2004年4月18日の間に送信されたメッセージ。*

*より正確には: 2004年4月16日午前12:00(または00:00)以降、2004年4月18日前に送信されるメッセージ。

回答:


10

特定の時刻は、「after」演算子には指定された日付が含まれ、「before」演算子には日付が含まれないことを示すためにドキュメントに記載されています。より具体的な時間範囲で検索ボックスを使用する方法はありません。

Google Apps Scriptsを使用している場合は、現在の最適な日付を使用して検索できます。次に、時間およびその他の基準に基づいて、結果のスレッドをフィルタリングできます。例:

var threads = GmailApp.search("after:2014/09/01 before:2014/09/02",0,100);
var timeFrom = new Date("2014/09/01 10:00:00").getTime();
var timeTo = new Date("2014/09/01 13:00:00").getTime();

for (var i = 0; i < threads.length; i++){
  var timeThreadStart = threads[i].getFirstMessageDate().getTime();

  if(timeThreadStart > timeFrom && timeThreadStart < timeTo){
    //do something
  }
}

注:「後」演算子は指定された日付を含み、「前」演算子は日付を除外します!!
ハビーブパーワッド16年

こんにちはPyrodogg、use labelで参加できますか?GmailApp.search
Pathic

あなたの質問を正しく理解していれば、はい、検索基準でもラベルを使用できます。例 「after:2019/01/01 before:2019/02/01 label:purchases」。私があなたの質問を理解しなかったならば、私に知らせてください。
ピロドッグ

8

search演算子after:、before:、newer:、older:はUnixタイムスタンプを受け入れるため、最大1秒の精度で時間範囲を指定することができます。Epoch Converterなどのツールを使用すると、次のことがわかります。

  • 2014-10-04の15:00(たとえばGMTを使用)のタイムスタンプは1412434800です
  • 2時間(7200秒)を追加するか、同じツールを再度使用します:1412442000

検索するafter:1412434800 before:1412442000と、この2時間の範囲内のメッセージが返されます。

Unix時間への変換は面倒な作業のように見えるため、この置換を適切に行うブックマークレットを作成しました。

たとえば、入力後

後:2015/07/26 10:00前:2015/07/27 11:30

検索ボックス(そのままでは機能しません)でブックマークレットを呼び出すと、文字列が

後:1437919200前:1438011000

(ブックマークレットは、指定されたタイムスタンプを現地時間で解釈します。)

リンクしたページには、ソースとブックマークレットとのドラッグ可能なリンクの両方があります。完全を期すために、ソースコードも以下に掲載されています。

inp = document.querySelectorAll('input');
for (i in inp) {
  if (/(after|before|newer|older):/.test(inp[i].value)) {
    str = inp[i].value;
    times = str.match(/\d[\d\/: ]*\d/g);
    for (j in times) {
      if (Date.parse(times[j])) {
        str = str.replace(times[j], Date.parse(times[j])/1000);
      }
    }
    inp[i].value = str;
  } 
}

そのようでafter:UNIXTIMESTAMP...正常に動作していない
Kunok

@Kunokは私には有効なようです。詳しく説明してもらえますか?
ナクリ

1
@nakhliうーん、これは古い。しかし、私が覚えている限りでは、入力としてint charが多すぎたと思います。私は最後の3桁またはそのようなものを削除しなければならなかったと思います。上記のこの回答が言及しているように、回答の例を参照すると、10文字が含まれていますが、Date.now()13文字が返されます。そんな感じ。私はそれを修正し、それ以来スクリプトは動作します。過去12か月間はまだ0〜24で実行されており、おそらく非常に長い間実行されるでしょう。ありがとう。:P
クノック

ミリ秒を返すため13文字
Shiplu Mokaddim
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.