เป็นไปได้ไหมที่จะค้นหาข้อความ Gmail โดยการประทับเวลา?


13

เป็นไปได้ไหมที่จะค้นหาข้อความ Gmail ทั้งหมดภายในระยะที่ละเอียดกว่าวัน?

ตัวอย่างเช่นฉันสามารถค้นหาข้อความแชททั้งหมดตั้งแต่ 15.00 น. ถึง 17.00 น. ในวันที่ 4 ตุลาคมได้หรือไม่? มันจะมีลักษณะอย่างไร

ดูที่การอ้างอิงการค้นหาขั้นสูงของ Gmailฉันสังเกตเห็นว่าพวกเขาพูดถึงเวลาที่ระบุ แต่ไม่ระบุรูปแบบมีแนวโน้มมากที่สุดที่ไม่รองรับ แต่ฉันคิดว่าฉันจะตรวจสอบในกรณีที่ฉันป้อนการค้นหาในรูปแบบที่ผิด .. .

ตัวอย่าง:หลังจาก: 2004/04/16 ก่อน: 2004/04/18

ความหมาย:ข้อความที่ส่งระหว่างวันที่ 16 เมษายน 2547 ถึงวันที่ 18 เมษายน 2547 *

* แม่นยำยิ่งขึ้น:ข้อความที่ส่งหลัง 12.00 น. (หรือ 00:00) 16 เมษายน 2547 และก่อนวันที่ 18 เมษายน 2547

คำตอบ:


10

เวลาที่ระบุถูกกล่าวถึงในเอกสารประกอบเพื่อแสดงว่าตัวดำเนินการ "after" รวมถึงวันที่ที่กำหนดในขณะที่ตัวดำเนินการ "ก่อน" ไม่รวมวันที่ ไม่มีวิธีใช้ช่องค้นหาในช่วงเวลาที่เฉพาะเจาะจงมากขึ้น

หากคุณใช้งาน 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
  }
}

หมายเหตุ: ตัวดำเนินการ "after" รวมถึงวันที่ที่ให้ในขณะที่ตัวดำเนินการ "before" ไม่รวมวันที่ !!
Habeeb Perwad

สวัสดี Pyrodogg ฉันสามารถเข้าร่วมกับฉลากการใช้งานได้หรือไม่ GmailApp.search
สงสาร

หากฉันเข้าใจคำถามของคุณถูกต้องคุณสามารถใช้ป้ายกำกับได้ในเกณฑ์การค้นหา อดีต "หลัง: 2019/01/01 ก่อน: 2019/02/01 ป้ายกำกับ: การซื้อ" หากฉันไม่เข้าใจคำถามของคุณโปรดแจ้งให้เราทราบ
Pyrodogg

8

มันเป็นไปได้ที่จะระบุช่วงเวลาที่มีความแม่นยำถึงสองเพราะผู้ประกอบการค้นหาหลังจาก :, ก่อน :, ใหม่ :, เก่า: ยอมรับ timestamps การใช้เครื่องมือเช่นEpoch Converterคุณสามารถค้นหาได้

  • 2014-10-04 เวลา 15:00 น. (ใช้ GMT ตัวอย่าง) มีการประทับเวลา 1412434800
  • เพิ่มสองชั่วโมง (7200 วินาที) หรือใช้เครื่องมือเดียวกันอีกครั้ง: 1412442000

การค้นหาafter:1412434800 before:1412442000จะส่งคืนข้อความภายในช่วง 2 ชั่วโมงนี้

เนื่องจากการแปลงเป็น Unix เวลาดูเหมือนเป็นงานที่น่าเบื่อหน่ายฉันจึงสร้างbookmarkletที่ทำให้การแทนที่นี้เกิดขึ้น

ตัวอย่างเช่นหลังจากพิมพ์

หลัง: 2015/07/26 10:00 ก่อน: 2015/07/27 11:30

ในช่องค้นหา (ซึ่งจะไม่ทำงานเหมือนเดิม) ให้เรียกใช้ bookmarklet และสตริงจะถูกแทนที่ด้วย

หลัง: 1437919200 ก่อน: 1438011000

(bookmarklet ตีความการประทับเวลาที่กำหนดในเวลาท้องถิ่นของคุณ)

หน้าที่ฉันลิงก์มีทั้งแหล่งที่มาและลิงค์ที่สามารถลากได้ด้วย bookmarklet เพื่อความสมบูรณ์ซอร์สโค้ดก็โพสต์ด้านล่าง

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 ดูเหมือนจะทำงานกับฉัน คุณช่วยอธิบายได้ไหม?
nakhli

1
@nakhli Ugh..this เก่า แต่เท่าที่ฉันจำได้ฉันคิดว่าฉันให้ตัวอักษร int มากเกินไปเป็นตัวป้อนข้อมูล ฉันคิดว่าฉันต้องลบ 3 หลักสุดท้ายหรืออะไรทำนองนั้น ค่อนข้างเป็นคำตอบข้างต้นกล่าวถึงตัวอย่างหมายเหตุในคำตอบมันมี 10 ตัวอักษรในขณะที่Date.now()จะกลับ 13 ตัวอักษร อะไรแบบนั้น. ฉันแก้ไขมันและสคริปต์ทำงานตั้งแต่นั้นมามันยังคงทำงาน 0-24 เมื่อ 12 เดือนที่ผ่านมาและอาจจะทำงานเป็นเวลานานมาก ขอบคุณ : P
Kunok

13 ตัวละครเพราะมันจะคืนค่ามิลลิวินาที
Shiplu Mokaddim
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.