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 | レスポンスの内容 | |
3 | スレッドをゴミ箱に移動 | |
1 | スコープ | |
2 | 実行 | |
3 | レスポンスの内容 | |
4 | スレッドをゴミ箱から削除 | |
1 | スコープ | |
2 | 実行 | |
3 | レスポンスの内容 |
1. スレッドのラベル更新・削除
指定したスレッドのラベルを追加・削除します。
指定するラベルは、
⧉[Gmail API] Javaでメールボックス内のラベルを取得する
で取得できます。
1.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY
⧉[Gmail API] JavaでGmail APIを使う(2.2 Gmailインスタンスを取得)
でスコープを指定してください。
1.2. 実行
指定したスレッドのラベルを追加・削除します。
追加の場合
ModifyThreadRequest.setAddLabelIdsでラベルを指定します。
削除の場合
ModifyThreadRequest.setRemoveLabelIdsでラベルを指定します。
存在しないラベルを指定するとエラーになります。
public static void main(String[] args) throws Exception{
Gmail gmail = getGmail();
Gmail.Users users = gmail.users();
Gmail.Users.Threads threads = users.threads();
ModifyThreadRequest content = new ModifyThreadRequest();
content.setAddLabelIds(Collections.singletonList("INBOX"));
Gmail.Users.Threads.Modify modify = threads.modify("メールアドレス","スレッドID",content);
com.google.api.services.gmail.model.Thread res = modify.execute();
System.out.println(res);
}
1.2.1. HTTPリクエスト
POST: https://gmail.googleapis.com/gmail/v1/users/{メールアドレス}/threads/{スレッドID}/modify
が実行されます。
1.2.2. クエリパラメータ
クエリパラメータはありません。
2.2.2. リクエストボディ
ModifyThreadRequestのsetメソッドにより、リクエストボディを追加できます。
メソッド | 引数 | 説明 |
---|---|---|
setAddLabelIds | List<String> | このスレッドに追加するラベルIDのリスト 最大100個 |
setRemoveLabelIds | List<String> | このスレッドから削除するラベルIDのリスト 最大100個 |
1.3. レスポンスの内容
Thread
(com.google.api.services.gmail.modelパッケージ)
メソッド | 戻り値 | 説明 |
---|---|---|
getId | String | スレッドID |
getSnippet | String | メッセージテキスト |
getHistoryId | String | このスレッドを変更した最後の履歴レコードID |
getMessages | List<Message> | スレッド内のメッセージのリスト |
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
⧉[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.Threads threads = users.threads();
Gmail.Users.Threads.Delete delete = threads.delete("メールアドレス","スレッドID");
delete.execute();
}
2.2.1. HTTPリクエスト
DELETE: https://gmail.googleapis.com/gmail/v1/users/{メールアドレス}/threads/{スレッドID}
が実行されます。
2.2.2. クエリパラメータ
クエリパラメータはありません。
2.2.2. リクエストボディ
リクエストボディはありません。
2.3. レスポンスの内容
レスポンスはありません。
削除に失敗した場合、例外が発生します。
3. スレッドをゴミ箱に移動
指定したスレッドをゴミ箱に移動します。
3.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY
⧉[Gmail API] JavaでGmail APIを使う(2.2 Gmailインスタンスを取得)
でスコープを指定してください。
3.2. 実行
public static void main(String[] args) throws Exception{
Gmail gmail = getGmail();
Gmail.Users users = gmail.users();
Gmail.Users.Threads threads = users.threads();
Gmail.Users.Threads.Trash trash = threads.trash("メールアドレス","スレッドID");
com.google.api.services.gmail.model.Thread res = trash.execute();
System.out.println(res);
}
3.2.1. HTTPリクエスト
POST: https://gmail.googleapis.com/gmail/v1/users/{メールアドレス}/threads/{スレッドID}/trash
が実行されます。
3.2.2. クエリパラメータ
クエリパラメータはありません。
3.2.2. リクエストボディ
リクエストボディはありません。
3.3. レスポンスの内容
Thread
1.3. レスポンスの内容(Thread)と同じです。
4. スレッドをゴミ箱から削除
ゴミ箱に移動したスレッドを削除します。
4.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY
⧉[Gmail API] JavaでGmail APIを使う(2.2 Gmailインスタンスを取得)
でスコープを指定してください。
4.2. 実行
public static void main(String[] args) throws Exception{
Gmail gmail = getGmail();
Gmail.Users users = gmail.users();
Gmail.Users.Threads threads = users.threads();
Gmail.Users.Threads.Untrash untrash = threads.untrash("メールアドレス","スレッドID");
com.google.api.services.gmail.model.Thread res = untrash.execute();
System.out.println(res);
}
4.2.1. HTTPリクエスト
POST: https://gmail.googleapis.com/gmail/v1/users/{メールアドレス}/threads/{スレッドID}/untrash
が実行されます。
4.2.2. クエリパラメータ
クエリパラメータはありません。
4.2.2. リクエストボディ
リクエストボディはありません。
4.3. レスポンスの内容
Thread
1.3. レスポンスの内容(Thread)と同じです。
おしまい。。