SQL を使用した Gmail のクエリ



Gmail Data Provider を使用すると、Gmail アカウントからメールを簡単に検索できます。IMAP 検索コマンドの詳細を覚える必要はなく、シンプルな SQL 構文を使用するだけでクエリを実行できます。また、IMAP 検索仕様のすべての機能がサポートされており、複数の条件を組み合わせた検索も可能です。この記事では、SQL を使用してシンプルな検索から高度な IMAP 検索までを実行する方法をご紹介します。

メッセージフィールド

特定の送信者からのすべてのメールを検索するなど、シンプルな検索では WHERE 句でメッセージフィールドを使用できます。WHERE 句で使用できるカラムは、To、From、BCC、CC、Subject、MessageBody、Flags、Labels、Size、Date です。以下に、Gmail Data Provider で使用できるシンプルな構文の例を示します。

受信トレイで Twitter から送信された特定の日付以降のメールをすべて検索するには、次のクエリを使用します:

SELECT * FROM Inbox
WHERE (FROM='Twitter' AND Date > '11-25-2012')

件名が「CData Data Provider」のメールをすべて検索するには:

SELECT * FROM Inbox
WHERE (Subject = 'CData ADO.NET Data Provider')

2011年9月23日から2012年9月23日までの間に送信されたメールをすべて検索するには:

SELECT * FROM 'Gmail/Sent Mail'
WHERE (Date > '9-23-2011' AND Date < '9-23-2012')

受信トレイで Twitter または名前に「Microsoft」を含む送信者からのメールをすべて検索するには:

SELECT * FROM Inbox
WHERE (From='Twitter' OR From LIKE '%Microsoft%')

2012年10月1日以降の未読メールと Twitter からのすべてのメールを検索するには:

SELECT * FROM Inbox
WHERE (Flags LIKE '%UNSEEN%' AND Date > '10-1-2012' OR From='Twitter')

添付ファイル

メールに添付ファイルがあるかどうか、また添付ファイル名での検索も可能です。

受信トレイで「.java」を含むファイル名の添付ファイルがあるメールをすべて検索するには:

SELECT * FROM Inbox
WHERE (HasAttachments='TRUE' AND Attachments='.java')

LIMIT と COUNT

SELECT クエリでは LIMIT と COUNT ステートメントも使用できます:

Cc が「Microsoft」、Bcc が「Twitter」で添付ファイルのない受信トレイのメールを最初から30件取得するには:

SELECT * FROM Inbox
WHERE (CC='Microsoft' AND BCC ='Twitter' AND HasAttachments='FALSE')
LIMIT 30

受信トレイ内のメッセージ数を取得するには:

SELECT COUNT(Id) FROM Inbox

高度な IMAP 検索

Data Provider では、IMAP Search コマンドで定義された構文で任意の検索条件を使用できます。IMAP Search コマンドを直接使用して検索するには、Search Criteria 擬似カラムを使用します。 IMAP を直接使用して、受信トレイで未読かつ重要フラグが付いた2012年10月1日より前に受信したメールをすべて検索するには、以下のクエリを使用します:

SELECT * FROM Inbox
WHERE (SearchCriteria='UNSEEN FLAGGED BEFORE 1-Oct-2012')