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')