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


おしまい。。
1
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
1
1