Gmail API v1(Java)を使用して、
Gmailのフィルタを生成・削除する方法
についてご紹介します。
Gmail フィルタとは
受信したメールを設定したフィルタに応じて管理する機能です。
Gmailの「設定」 -> 「フィルタとブロック中のアドレス」 から設定できます。
作成可能なフィルタは1000個までです。
フィルタ設定画面
フィルタの条件の設定UI
フィルタの条件が一致した場合のアクションの設定UI
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
⧉[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();
Filter content = new Filter();
FilterCriteria criteria = new FilterCriteria();
criteria.setFrom("xxxxxxxx@example.jp");
content.setCriteria(criteria);
FilterAction action = new FilterAction();
action.setAddLabelIds(Arrays.asList("IMPORTANT"));
content.setAction(action);
Gmail.Users.Settings.Filters.Create create = filters.create("メールアドレス", content);
Filter res = create.execute();
System.out.println(res);
}
1.2.1. HTTPリクエスト
POST: https://gmail.googleapis.com/gmail/v1/users/{メールアドレス}/settings/filters
が実行されます。
1.2.2. クエリパラメータ
クエリパラメータはありません。
1.2.3. リクエストボディ
Filterのsetメソッドにより、リクエストボディを追加できます。
メソッド | 引数 | 説明 |
---|---|---|
getCriteria | FilterCriteria | フィルタの条件 |
getAction | FilterAction | フィルタの条件が一致した場合のアクション |
FilterCriteria(Set)
メソッド | 引数 | 説明 |
---|---|---|
setFrom | String | 送信者(または表示名)メールアドレス |
setTo | String | 受信者(または表示名)メールアドレス |
setSubject | String | 件名 |
setQuery | String | 指定されたクエリに一致するメッセージのみ取得 Gmailの検索ボックスと同じ形式 |
setNegatedQuery | String | 指定されたクエリに一致しないメッセージのみ取得 Gmailの検索ボックスと同じ形式 |
setHasAttachment | Boolean | メッセージに添付ファイルがあるか |
setExcludeChats | Boolean | 応答でチャットを除外するか |
setSize | Integer | すべてのヘッダーと添付ファイルを含む、メッセージ全体のサイズ(バイト単位) |
setSizeComparison | SizeComparison(enum) | サイズフィールドをメッセージサイズと比較する方法 |
FilterAction(Set)
メソッド | 引数 | 説明 |
---|---|---|
setAddLabelIds | List<String> | メッセージに追加するラベルのリスト |
setRemoveLabelIds | List<String> | メッセージから削除するラベルのリスト |
setForward | String | メッセージの転送先となるメールアドレス |
SizeComparison
定義値 | 内容 |
---|---|
unspecified | 未設定 |
smaller | 指定されたサイズより小さいメッセージを検索 |
larger | 指定されたサイズより大きいメッセージを検索 |
1.3. レスポンスの内容
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 | メッセージの転送先となるメールアドレス |
2. フィルタを削除
指定したフィルタを削除します。
削除したいフィルタIDを指定します。
1. フィルタを作成(Filter)の
getId()で取得した値を設定します。
2.1. スコープ
このAPIを実行するには、以下のスコープを指定してください。
GmailScopes.GMAIL_SETTINGS_BASIC
⧉[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.Delete delete = filters.delete("メールアドレス","フィルタID");
delete.execute();
}
2.2.1. HTTPリクエスト
DELETE: https://gmail.googleapis.com/gmail/v1/users/{メールアドレス}/settings/filters/{フィルタID}
が実行されます。
2.2.2. クエリパラメータ
クエリパラメータはありません。
2.2.3. リクエストボディ
リクエストボディはありません。
2.3. レスポンスの内容
レスポンスはありません。
削除に失敗した場合、例外が発生します。
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(カテゴリ) |
おしまい。。