타임 스탬프별로 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) 이후 및 2004 년 4 월 18 일 이전에 보낸 메시지.

답변:


10

특정 시간은 "후"연산자가 주어진 날짜를 포함하고 "이전"연산자는 날짜를 제외 함을 나타 내기 위해 문서에 언급되어 있습니다. 보다 구체적인 시간 범위에서 검색 창을 사용하는 방법은 없습니다.

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

안녕하세요 파이로 독, 사용 라벨과 함께 가입 할 수 있습니까? GmailApp.search
Pathic

귀하의 질문을 올바르게 이해하면 검색 기준에서도 레이블을 사용할 수 있습니다. 전의. "후 : 2019/01/01 전 : 2019/02/01 라벨 : 구매". 귀하의 질문을 이해하지 못한 경우 알려주십시오.
Pyrodogg '

8

검색 연산자 after :, before :, newer :, older : accept Unix 타임 스탬프를 허용 하므로 시간 범위를 최대 1 초까지 정확하게 지정할 수 있습니다 . 같은 도구를 사용하여 신기원 변환기 , 당신은 것을 알 수 있습니다

  • 2014-10-04 15:00 (예 : GMT 사용)의 타임 스탬프는 1412434800입니다.
  • 2 시간 (7200 초)을 추가하거나 동일한 도구를 다시 사용하십시오.

검색 after:1412434800 before:1412442000하면이 2 시간 범위 내의 메시지가 반환됩니다.

유닉스 시간으로 변환하는 것은 번거로운 것처럼 보이기 때문에이 대체를 위한 북마크 를 만들었습니다.

예를 들어, 입력 후

후 : 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은 나에게 효과가있는 것 같습니다. 자세히 설명해 주시겠습니까?
nakhli

1
@nakhli Ugh .. 이것은 낡았다. 그러나 내가 기억하는 한, 입력으로 너무 많은 int 문자를 주었다고 생각합니다. 마지막 3 자리 또는 그와 비슷한 것을 제거해야한다고 생각합니다. 위의 답변에서 언급 한 것처럼, 예를 들어 10자를 가지고 Date.now()13자를 반환합니다. 그런 것. 나는 그것을 고쳤고 그 이후로 스크립트가 작동합니다. 지난 12 개월 동안 여전히 0-24를 실행하고 있으며 아마도 오랫동안 실행될 것입니다. 감사. : P
Kunok

13 자 그것은 밀리 초를 반환하기 때문에
Shiplu Mokaddim
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.