Apakah mungkin untuk meminta pesan Gmail berdasarkan stempel waktu?

13

Apakah mungkin untuk mencari semua pesan Gmail dalam rentang yang lebih terperinci dari hari itu?

Misalnya, dapatkah saya mencari semua pesan obrolan mulai jam 15.00 - 17.00 pada 4 Oktober? Bagaimana kelihatannya?

Melihat referensi pencarian lanjutan Gmail saya perhatikan bahwa mereka menyebutkan waktu spesifik, tetapi tidak menentukan format, kemungkinan besar itu tidak didukung, tapi saya pikir saya akan memeriksa kalau-kalau saya hanya memasukkan pencarian dalam format yang salah .. .

Contoh: setelah: 2004/04/16 sebelum: 2004/04/18

Artinya: Pesan yang dikirim antara 16 April 2004 dan 18 April 2004. *

* Lebih tepatnya: Pesan yang dikirim setelah pukul 00:00 (atau 00:00) 16 April 2004 dan sebelum 18 April 2004.

oncifer
sumber

Jawaban:

10

Waktu spesifik disebutkan dalam dokumentasi untuk menunjukkan bahwa operator "setelah" termasuk tanggal yang diberikan, sedangkan operator "sebelum" tidak termasuk tanggal. Tidak ada cara untuk menggunakan kotak pencarian pada rentang waktu yang lebih spesifik.

Jika Anda menggunakan Skrip Google Apps, Anda dapat melakukan pencarian menggunakan tanggal terbaik yang Anda miliki. Kemudian Anda dapat memfilter utas yang dihasilkan berdasarkan Waktu dan kriteria lainnya. Contoh:

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
  }
}
Pyrodogg
sumber
CATATAN: operator "setelah" termasuk tanggal yang diberikan, sedangkan operator "sebelum" tidak termasuk tanggal !!
Habeeb Perwad
Hai Pyrodogg, bisakah saya bergabung dengan menggunakan label? GmailApp.search
Pathic
Jika saya memahami pertanyaan Anda dengan benar, ya Anda dapat menggunakan label juga dalam kriteria pencarian. Ex. "setelah: 2019/01/01 sebelumnya: label 2019/02/01: pembelian". Jika saya tidak mengerti pertanyaan Anda, beri tahu saya.
Pyrodogg
8

Dimungkinkan untuk menentukan rentang waktu dengan akurasi hingga satu detik, karena operator pencarian setelah :, sebelum:, lebih baru :, lebih tua: menerima cap waktu Unix . Dengan menggunakan alat seperti Epoch Converter , Anda dapat mengetahuinya

  • 2014-10-04 pada 15:00 (menggunakan GMT misalnya) memiliki timestamp 1412434800
  • Tambahkan dua jam (7200 detik), atau gunakan alat yang sama lagi: 1412442000

Mencari after:1412434800 before:1412442000akan mengembalikan pesan dalam rentang 2 jam ini.

Karena mengonversi ke waktu Unix terlihat seperti tugas, saya membuat bookmarklet yang menjadikan penggantian ini pada tempatnya.

Misalnya, setelah mengetik

setelah: 2015/07/26 10:00 sebelum: 2015/07/27 11:30

di kotak pencarian (yang tidak akan berfungsi sebagaimana mestinya), aktifkan bookmarklet dan string akan diganti oleh

setelah: 1437919200 sebelumnya: 1438011000

(Bookmarklet mengartikan cap waktu yang diberikan di waktu lokal Anda.)

Halaman yang saya tautkan memiliki sumber dan tautan yang dapat diseret dengan bookmarklet. Untuk kelengkapan, kode sumber juga diposting di bawah ini.

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;
  } 
}

sumber
Tampaknya itu after:UNIXTIMESTAMPtidak berfungsi dengan baik ...
Kunok
@Kunok tampaknya bekerja untuk saya. bisakah kamu menjelaskan lebih lanjut?
nakhli
1
@nakhli Ugh..ini sudah tua. Tapi sejauh yang saya ingat saya pikir saya memberikannya terlalu banyak karakter int sebagai input. Saya pikir saya harus menghapus 3 digit terakhir atau sesuatu seperti itu. Agak seperti jawaban di atas, perhatikan contoh dalam jawaban, ia memiliki 10 karakter, sementara Date.now()akan mengembalikan 13 karakter. Sesuatu seperti itu. Saya memperbaikinya dan script berfungsi sejak saat itu, masih berjalan 0-24 12 bulan terakhir, dan mungkin akan berjalan untuk waktu yang sangat lama. Terima kasih. : P
Kunok
13 karakter karena mengembalikan milidetik
Shiplu Mokaddim