LoginSignup
1
1

[Gmail API] Javaでメールボックス内のラベルを作成・更新・削除する

Posted at

Gmail API v1(Java)を使用して、
Gmailのラベルを作成・更新・削除する方法
についてご紹介します。

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

Gmailの「設定」 -> 「ラベル」 から確認・設定できます。
作成可能なラベルは10,000個までです。

ラベルにはシステムが用意したsystemとユーザーが作成したuserが存在します。
systemのラベルは作成したり削除することはできません。(5. システムラベル)

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

No 目次
1 ラベルを作成
1 スコープ
2 実行
3 レスポンスの内容
2 ラベルを上書き
1 スコープ
2 実行
3 レスポンスの内容
3 ラベルを更新
1 スコープ
2 実行
3 レスポンスの内容
4 ラベルを削除
1 スコープ
2 実行
3 レスポンスの内容
5 システムラベル

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

1. ラベルを作成

メールボックス内にラベルを作成します。
作成可能な最大数は10,000です。

1.1. スコープ

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

GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY
GmailScopes.GMAIL_LABELS

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

1.2. 実行

ラベルを作成します。

setName、setLabelListVisibility、setMessageListVisibility
の3点は必須項目です。指定がないとエラーになります。

生成時は、Label.setId()でラベルIDを設定することはできません。
ラベルIDは自動で採番されます。

既に存在するラベル名(Label.setName())を指定することはできません。
同じ名前を指定するとエラーになります。

public static void main(String[] args) throws Exception{
    Gmail gmail = getGmail();
    Gmail.Users users = gmail.users();
    Gmail.Users.Labels labels = users.labels();
    
    Label content = new Label();
    content.setName("テストラベル");
    content.setLabelListVisibility("labelShow");
    content.setMessageListVisibility("show");
    Gmail.Users.Labels.Create create = labels.create("メールアドレス", content);
        
    Label res = create.execute();
    System.out.println(res);
}
1.2.1. HTTPリクエスト

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

1.2.2. クエリパラメータ

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

1.2.3. リクエストボディ

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

メソッド 引数 説明
setId String ラベルID
setName String ラベルの表示名
階層で親がある場合は、「/」でつなげた名前になる
例:"親/子/孫"
setMessageListVisibility MessageListVisibility(enum) 「メール リストに表示」の設定
setLabelListVisibility LabelListVisibility(enum) 「ラベル リストに表示」の設定
setType Type(enum) 所有者タイプ
setMessagesTotal Integer メッセージの総数
setMessagesUnread Integer 未読メッセージの数
setThreadsTotal Integer スレッドの総数
setThreadsUnread Integer 未読のスレッドの数
setColor Color ラベルに割り当てる色

1.3. レスポンスの内容

Label

メソッド 戻り値 説明
getId String ラベルID
getName String ラベルの表示名
階層で親がある場合は、「/」でつなげた名前になる
例:"親/子/孫"
getMessageListVisibility MessageListVisibility(enum) 「メール リストに表示」の設定
getLabelListVisibility LabelListVisibility(enum) 「ラベル リストに表示」の設定
getType Type(enum) 所有者タイプ
getMessagesTotal Integer メッセージの総数
getMessagesUnread Integer 未読メッセージの数
getThreadsTotal Integer スレッドの総数
getThreadsUnread Integer 未読のスレッドの数
getColor Color ラベルに割り当てる色

MessageListVisibility

Gmailのラベル設定メニューの「メール リストに表示」の内容です。

定義値 内容
show メールリストに表示
hide メールリストに非表示

LabelListVisibility

Gmailのラベル設定メニューの「ラベル リストに表示」の内容です。

定義値 内容
labelShow ラベルリストに表示
labelShowIfUnread 未読の場合はラベルリストに表示
labelHide ラベルリストに非表示

Type

定義値 内容
system Gmailで作成されたラベル
user ユーザーまたはアプリケーションによって作成されたカスタムラベル

Color

メソッド 戻り値 説明
getTextColor String ラベルのテキスト色
例:"#684e07"
getBackgroundColor String 背景色
例:"#fdedc1"

2. ラベルを上書き

指定したラベルを上書きします。

3. ラベルを更新と違うところは、
指定した存在するラベルを新しいラベルに置き換えます。

2.1. スコープ

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

GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY
GmailScopes.GMAIL_LABELS

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

2.2. 実行

指定したラベルを更新します。

setId、setName、setLabelListVisibility、setMessageListVisibility
の4点は必須項目です。指定がないとエラーになります。

public static void main(String[] args) throws Exception{
    Gmail gmail = getGmail();
    Gmail.Users users = gmail.users();
    Gmail.Users.Labels labels = users.labels();
    
    Label content = new Label();
    content.setId("ラベルID");
    content.setName("上書きテスト");
    content.setLabelListVisibility("labelShow");
    content.setMessageListVisibility("show");
    Gmail.Users.Labels.Update update = labels.update("メールアドレス",content.getId(),content);
    
    Label res = update.execute();
    System.out.println(res);
}
2.2.1. HTTPリクエスト

PUT: https://gmail.googleapis.com/gmail/v1/users/{メールアドレス}/labels/{ラベルID}
が実行されます。

2.2.2. クエリパラメータ

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

2.2.3. リクエストボディ

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

1.2.3. リクエストボディと同じです。

2.3. レスポンスの内容

Label

1.3. レスポンスの内容(Label)と同じです。

3. ラベルを更新

指定したラベルを更新します。

2. ラベルを上書きとの違いは、
指定した存在するラベルの設定内容を更新します。

3.1. スコープ

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

GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY
GmailScopes.GMAIL_LABELS

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

3.2. 実行

指定したラベルを更新します。

ラベルIDの指定は必須です。指定がないとエラーになります。

public static void main(String[] args) throws Exception{
    Gmail gmail = getGmail();
    Gmail.Users users = gmail.users();
    Gmail.Users.Labels labels = users.labels();
    
    Label content = new Label();
    content.setId("ラベルID");
    content.setName("更新テスト");
    Gmail.Users.Labels.Patch patch = labels.patch("メールアドレス",content.getId(),content);
    
    Label res = patch.execute();
    System.out.println(res);
}
3.2.1. HTTPリクエスト

PATCH: https://gmail.googleapis.com/gmail/v1/users/{メールアドレス}/labels/{ラベルID}
が実行されます。

3.2.2. クエリパラメータ

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

3.2.3. リクエストボディ

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

1.2.3. リクエストボディと同じです。

2.3. レスポンスの内容

Label

1.3. レスポンスの内容(Label)と同じです。

4. ラベルを削除

指定したラベルを削除します。

4.1. スコープ

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

GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY
GmailScopes.GMAIL_LABELS

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

4.2. 実行

指定したラベルを削除します。

Typeが「user」のラベルのみ削除できます。

public static void main(String[] args) throws Exception{
    Gmail gmail = getGmail();
    Gmail.Users users = gmail.users();
    Gmail.Users.Labels labels = users.labels();

    Gmail.Users.Labels.Delete delete = labels.delete("メールアドレス","ラベルID");

    delete.execute();
}
4.2.1. HTTPリクエスト

DELETE: https://gmail.googleapis.com/gmail/v1/users/{メールアドレス}/labels/{ラベルID}
が実行されます。

4.2.2. クエリパラメータ

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

4.2.3. リクエストボディ

リクエストボディはありません。

4.3. レスポンスの内容

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

5. システムラベル

typeが「system」であるラベル一覧を下記に示します。
(あくまで、筆者の環境でとれた情報です。)

id name 説明
INBOX INBOX 受信トレイ
STARRED STARRED スター付き
IMPORTANT IMPORTANT 重要
CHAT CHAT チャット
SENT SENT 送信済み
DRAFT DRAFT 下書き
SPAM SPAM 迷惑メール
TRASH TRASH ゴミ箱
CATEGORY_SOCIAL CATEGORY_SOCIAL ソーシャル(カテゴリ)
CATEGORY_UPDATES CATEGORY_UPDATES 新着(カテゴリ)
CATEGORY_FORUMS CATEGORY_FORUMS フォーラム(カテゴリ)
CATEGORY_PROMOTIONS CATEGORY_PROMOTIONS プロモーション(カテゴリ)


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