Gmail API v1(Java)を使用して、
Gmailのフィルタ情報を取得する方法
についてご紹介します。
Gmail フィルタとは
受信したメールを設定したフィルタに応じて管理する機能です。
Gmailの「設定」 -> 「フィルタとブロック中のアドレス」 から設定できます。
作成可能なフィルタは1000個までです。
フィルタ設定画面
フィルタの条件の設定UI
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F114621%2Ffa804a7b-9696-27f8-0163-46ff404ddd3e.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=cc1a6126df550144bd719caf98aa63a4)
フィルタの条件が一致した場合のアクションの設定UI
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F114621%2F831c1eab-6ea1-d5ae-bd53-3773b0663c14.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=6fbb317cb09c8bfa1890e8c2ac5e0638)
APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Gmail API] JavaでGmail APIを使う
を参照ください。
No | 目次 | |
---|---|---|
1 | フィルタリストを取得 | |
1 | スコープ | |
2 | 実行 | |
3 | レスポンスの内容 | |
2 | フィルタ情報を取得 | |
1 | スコープ | |
2 | 実行 | |
3 | レスポンスの内容 | |
3 | Gmail UIとの紐付け | |
1 | フィルタの条件 | |
2 | フィルタの条件が一致した場合のアクション |
1. フィルタリストを取得
Gmailフィルタリストを取得します。
1.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
GmailScopes.GMAIL_SETTINGS_BASIC
GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY
GmailScopes.GMAIL_READONLY
⧉[Gmail API] JavaでGmail APIを使う(2.2 Gmailインスタンスを取得)
でスコープを指定してください。
1.2. 実行
public static void main(String[] args) throws Exception{
Gmail gmail = getGmail();
Gmail.Users users = gmail.users();
Gmail.Users.Settings settings = users.settings();
Gmail.Users.Settings.Filters filters = settings.filters();
Gmail.Users.Settings.Filters.List list = filters.list("メールアドレス");
ListFiltersResponse res = list.execute();
System.out.println(res);
}
1.2.1. HTTPリクエスト
GET: https://gmail.googleapis.com/gmail/v1/users/{メールアドレス}/settings/filters
が実行されます。
1.2.2. クエリパラメータ
クエリパラメータはありません。
1.3. レスポンスの内容
ListFiltersResponse
メソッド | 戻り値 | 説明 |
---|---|---|
getFilter | List<Filter> | フィルタのリスト |
Filter
メソッド | 戻り値 | 説明 |
---|---|---|
getId | String | フィルタID |
getCriteria | FilterCriteria | フィルタの条件 |
getAction | FilterAction | フィルタの条件が一致した場合のアクション |
FilterCriteria
メソッド | 戻り値 | 説明 |
---|---|---|
getFrom | String | 送信者(または表示名)メールアドレス |
getTo | String | 受信者(または表示名)メールアドレス |
getSubject | String | 件名 |
getQuery | String | 指定されたクエリに一致するメッセージのみ取得 Gmailの検索ボックスと同じ形式 |
getNegatedQuery | String | 指定されたクエリに一致しないメッセージのみ取得 Gmailの検索ボックスと同じ形式 |
getHasAttachment | Boolean | メッセージに添付ファイルがあるか |
getExcludeChats | Boolean | 応答でチャットを除外するか |
getSize | Integer | すべてのヘッダーと添付ファイルを含む、メッセージ全体のサイズ(バイト単位) |
getSizeComparison | SizeComparison(enum) | サイズフィールドをメッセージサイズと比較する方法 |
FilterAction
メソッド | 戻り値 | 説明 |
---|---|---|
getAddLabelIds | List<String> | メッセージに追加するラベルのリスト |
getRemoveLabelIds | List<String> | メッセージから削除するラベルのリスト |
getForward | String | メッセージの転送先となるメールアドレス |
SizeComparison
定義値 | 内容 |
---|---|
unspecified | 未設定 |
smaller | 指定されたサイズより小さいメッセージを検索 |
larger | 指定されたサイズより大きいメッセージを検索 |
2. フィルタ情報を取得
フィルタの情報を取得します。
取得したいフィルタIDを指定します。
1. フィルタリストを取得(Filter)の
getId()で取得した値を設定します。
2.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
GmailScopes.GMAIL_SETTINGS_BASIC
GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY
GmailScopes.GMAIL_READONLY
⧉[Gmail API] JavaでGmail APIを使う(2.2 Gmailインスタンスを取得)
でスコープを指定してください。
2.2. 実行
public static void main(String[] args) throws Exception{
Gmail gmail = getGmail();
Gmail.Users users = gmail.users();
Gmail.Users.Settings settings = users.settings();
Gmail.Users.Settings.Filters filters = settings.filters();
Gmail.Users.Settings.Filters.Get get = filters.get("メールアドレス","フィルタID");
Filter res = get.execute();
System.out.println(res);
}
2.2.1. HTTPリクエスト
GET: https://gmail.googleapis.com/gmail/v1/users/{メールアドレス}/settings/filters/{フィルタID}
が実行されます。
2.2.2. クエリパラメータ
クエリパラメータはありません。
2.3. レスポンスの内容
Filter
1.3. レスポンスの内容(Filter)と同じです。
3. Gmail UIとの紐付け
3.1. フィルタの条件
GmailのUI(フィルタの条件の設定UI)と
FilterCriteriaを紐づけた一覧を用意しました。
UI | Criterianのメソッド |
---|---|
From | from |
To | to |
件名 | subject |
含む | query |
含まない | negatedQuery |
添付ファイルあり | hasAttachment |
チャットは除外する | excludeChats |
3.2. フィルタの条件が一致した場合のアクション
GmailのUI(フィルタの条件が一致した場合のアクションの設定UI)と
FilterActionを紐づけた一覧を用意しました。
UI | Actionのメソッド | LabelID |
---|---|---|
受信トレイをスキップ(アーカイブする) | removeLabelIds | INBOX |
既読にする | removeLabelIds | UNREAD |
スターを付ける | addLabelIds | STARRED |
ラベルを付ける | addLabelIds | 任意のラベルID |
転送する | forward | |
削除する | addLabelIds | TRASH |
迷惑メールにしない | removeLabelIds | SPAM |
常に重要マークを付ける | addLabelIds | IMPORTANT |
重要マークを付けない | removeLabelIds | IMPORTANT |
適用するカテゴリ | addLabelIds | 任意のラベルID(カテゴリ) |
おしまい。。