LoginSignup
1
1

[Gmail API] Javaでメールのラベルを変更する

Posted at

Gmail API v1(Java)を使用して、
Gmailのメールのラベルを変更する方法
についてご紹介します。

ラベルとは
メールにつける印みたいなものです。
ラベルを作ることでラベル毎に整理、管理することができます。

APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Gmail API] JavaでGmail APIを使う
を参照ください。

本文中の引数にある「メールアドレス」の指定は、
OAuth 2.0使用の場合は「me」(自身)と指定してください。
「me」は認証されたユーザーを示します。

No 目次
1 ラベルを変更
1 スコープ
2 実行
3 レスポンスの内容
2 ラベルを一括変更
1 スコープ
2 実行
3 レスポンスの内容

1. ラベルを変更

指定したメールのラベルを変更します。

一覧の取得ではメッセージの詳細内容までは取得できません。
詳細内容を取得したい場合は2. メッセージを取得を参照ください。

1.1. スコープ

このAPIを実行するには、以下のいずれかのスコープを指定してください。

GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY

⧉[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.Messages messages = users.messages();
    ModifyMessageRequest content = new ModifyMessageRequest();
    content.setAddLabelIds(Arrays.asList("追加するラベル名"));
    content.setRemoveLabelIds(Arrays.asList("削除するラベル名"));
    
    Gmail.Users.Messages.Modify modify = messages.modify("メールアドレス","メッセージID",content);
    
    Message res = modify.execute();
    System.out.println(res);
}

1.2.1. HTTPリクエスト

POST: https://gmail.googleapis.com/gmail/v1/users/{メールアドレス}/messages/{メッセージID}/modify
が実行されます。

1.2.2. クエリパラメータ

クエリパラメータはありません。

1.2.3. リクエストボディ

ModifyMessageRequestのsetメソッドにより、リクエストボディを設定できます。

メソッド 引数 説明
setAddLabelIds List<String> 追加するラベルIDのリスト
更新ごとに最大100個まで
setRemoveLabelIds List<String> 削除するラベルIDのリスト
更新ごとに最大100個まで

1.3. レスポンスの内容

Message

メソッド 戻り値 説明
getId String メッセージID
getThreadId String メッセージが属するスレッドID
getLabelIds List<String> このメッセージに適用されるラベルのIDのリスト
getSnippet String メッセージテキストの短い部分
getHistoryId String このメッセージを変更した最後の履歴レコードの ID
getInternalDate Long 内部メッセージ作成タイムスタンプ(エポックミリ秒)
getPayload MessagePart メッセージ部分の解析された電子メール構造。
getSizeEstimate Integer メッセージの推定サイズ(バイト単位)
getRaw String RFC2822形式で Base64URLエンコードされた文字列の電子メールメッセージ全体

MessagePart

メソッド 戻り値 説明
getPartId String メッセージ部分ID
getMimeType String メッセージ部分のMIMEタイプ
getFilename String 添付ファイルのファイル名
getHeaders List<MessagePartHeader> メッセージ部分のヘッダーのリスト
getBody MessagePartBody メッセージ部分の本文
getParts List<MessagePart> 子のMIMEメッセージ部分

MessagePartHeader

メソッド 戻り値 説明
getName String セパレータの前のヘッダーの名前
getValue String 区切り文字の後のヘッダーの値

MessagePartBody

メソッド 戻り値 説明
getAttachmentId String 添付ファイルID
getSize Integer メッセージ部分データのバイト数
getData String MIME メッセージ部分の本文データ(base64 url エンコード文字列)

2. ラベルを一括変更

指定した複数のメールのラベルを一括で変更します。

2.1. スコープ

このAPIを実行するには、以下のいずれかのスコープを指定してください。

GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY

⧉[Gmail API] JavaでGmail APIを使う(2.2 Gmailインスタンスを取得)
でスコープを指定してください。

2.2. 実行

ラベルを追加・削除したいメッセージIDを指定し、
追加するラベル名、削除するラベル名を指定します。

public static void main(String[] args) throws Exception{
    Gmail gmail = getGmail();
    Gmail.Users users = gmail.users();
    Gmail.Users.Messages messages = users.messages();
    
    BatchModifyMessagesRequest content = new BatchModifyMessagesRequest();
    content.setIds(Arrays.asList("変更するメッセージID"));
    content.setAddLabelIds(Arrays.asList("追加するラベルID"));
    content.setRemoveLabelIds(Arrays.asList("削除するラベルID"));
    Gmail.Users.Messages.BatchModify modify = messages.batchModify("メールアドレス",content);
    
    modify.execute();
}

2.2.1. HTTPリクエスト

POST: https://gmail.googleapis.com/gmail/v1/users/{メールアドレス}/messages/batchModify
が実行されます。

2.2.2. クエリパラメータ

クエリパラメータはありません。

2.2.3. リクエストボディ

BatchModifyMessagesRequestのsetメソッドにより、クエリパラメータを追加できます。

メソッド 引数 説明
setIds List<String> 変更するメッセージIDリスト
更新ごとに1000個まで
setAddLabelIds List<String> 追加するラベルIDのリスト
更新ごとに最大100個まで
setRemoveLabelIds List<String> 削除するラベルIDのリスト
更新ごとに最大100個まで

2.3. レスポンスの内容

レスポンスはありません。
変更に失敗した場合、例外が発生します。



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