LoginSignup
0
1

[Gmail API] JavaでGmailのフィルタを生成・削除する

Posted at

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(カテゴリ)


おしまい。。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1