5

Gmailからの昨日のすべてのメールのリストが欲しいです。Google Apps Scriptを使用して処理しようとしています。受信トレイにクエリを書き込んでから、GmailApp.searchを使用しています。Gmailのafter:and before:検索クエリは、メールの送信元のSMTPサーバー時間(Googleのサーバー)に基づいて検索するため、予期しない結果を返します。したがって、別のタイムゾーンにいるため、検索によって不適切な結果が得られます。時間帯の違いに対応できるように、時間基準を使用してGmailを検索する方法はありますか?

ローカルタイムゾーン、カレンダー、gmailなどが私のタイムゾーンに正しく設定されているため、受信トレイに表示されるメールのタイミングが正しく設定されていることに注意してください。検索だけが問題を引き起こしています。

4

2 に答える 2

11

いくつかの試行錯誤の末、Gmailのメールを時間で検索することは確かに可能であると考えました。Date()返されるGoogleAppsスクリプトは、タイムゾーンに応じていることに注意してください。

new Date()以下のコードは、タイムゾーンに応じた日付と時刻を指定していると仮定して、前日のすべての電子メールを受信トレイに返します。getTime()新しい/古い検索クエリは秒を期待しているのに対し、ミリ秒を返すため、1000による除算が行われます。

var month = new Date().getMonth();
var date = new Date().getDate();
var year = new Date().getFullYear();
var time1 = new Date(year, month, date, 0, 0, 0).getTime();
var time2 = time1 - 86400000;
var query = "newer:" + time2/1000 + " older:"  + time1/1000 + " in:inbox";
var conversations = GmailApp.search(query);
于 2012-09-08T10:38:42.060 に答える
2

使用している正確な検索文字列と、前後の日付を作成する方法を教えてください。Utilities.formatDate()関数を使用して、現在のタイムゾーンに日付文字列をフォーマットできます。

別の解決策は、すべてのメール(おそらく100程度)をフェッチしてから、関心のある期間に収まらないすべてのメールを破棄することです。

于 2012-09-04T11:22:23.517 に答える