スレッドの管理
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
Gmail API は Thread
リソースを使用して、メールの返信とその元のメッセージを 1 つのスレッドにまとめます。これにより、会話内のすべてのメッセージを順番に取得できるため、メッセージのコンテキストを把握したり、検索結果を絞り込んだりすることが容易になります。
メッセージと同様に、スレッドにラベルを適用することもできます。ただし、メッセージとは異なり、スレッドは作成できません。削除のみ可能です。ただし、メッセージをスレッドに挿入することはできます。
目次
スレッドの取得
スレッドを使用すると、会話内のメッセージを順番に簡単に取得できます。一連のスレッドを一覧表示することで、メッセージを会話ごとにグループ化し、追加のコンテキストを提供できます。threads.list
メソッドを使用してスレッドのリストを取得するか、threads.get
を使用して特定のスレッドを取得できます。Message
リソースと同じクエリ パラメータを使用して、スレッドをフィルタすることもできます。スレッド内のいずれかのメッセージがクエリと一致した場合、そのスレッドが結果として返されます。
次のコードサンプルは、受信トレイで最もチャットの多いスレッドを表示するサンプルで、両方のメソッドを使用する方法を示しています。threads.list
メソッドはすべてのスレッド ID を取得し、threads.get
は各スレッド内のすべてのメッセージを取得します。返信が 3 件以上ある場合は、Subject
行を抽出し、空でない行とスレッド内のメッセージの数を表示します。このコードサンプルは、対応する DevByte 動画でも紹介されています。
スレッドへの下書きとメッセージの追加
別のメールへの返信や会話の一部であるメッセージを送信または移行する場合は、関連するスレッドにメッセージを追加する必要があります。これにより、会話に参加している Gmail ユーザーはメッセージのコンテキストを把握しやすくなります。
下書きは、下書きメッセージの作成、更新、送信の一環としてスレッドに追加できます。メッセージの挿入または送信の一環として、スレッドにメッセージを追加することもできます。
スレッドの一部となるには、メッセージまたは下書きが次の条件を満たしている必要があります。
- リクエストで指定する
Message
または Draft.Message
に、リクエストされた threadId
を指定する必要があります。
References
ヘッダーと In-Reply-To
ヘッダーは、RFC 2822 標準に準拠して設定する必要があります。
Subject
ヘッダーが一致している必要があります。
下書きの作成やメッセージの送信の例をご覧ください。どちらの場合も、スレッド ID とペアになった threadId
キーをメッセージのメタデータ(message
オブジェクト)に追加するだけです。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-08-29 UTC。
[null,null,["最終更新日 2025-08-29 UTC。"],[],[],null,["# Managing Threads\n\nThe Gmail API uses [`Thread` resources](/workspace/gmail/api/v1/reference/users/threads)\nto group email replies with their original message into a single conversation or\nthread. This allows you to retrieve all messages in a conversation, in order,\nmaking it easier to have context for a message or to refine search results.\n\nLike [messages](/workspace/gmail/api/v1/reference/users/messages), threads may also have\nlabels applied to them. However, unlike messages, threads cannot be created,\nonly deleted. Messages can, however, be inserted into a thread.\n\nContents\n--------\n\nRetrieving threads\n------------------\n\nThreads provide a simple way of retrieving messages in a conversation in order.\nBy listing a set of threads you can choose to group messages by conversation\nand provide additional context. You can retrieve a list of threads using the\n[`threads.list`](/workspace/gmail/api/v1/reference/users/threads/list) method, or retrieve\na specific thread with\n[`threads.get`](/workspace/gmail/api/v1/reference/users/threads/list). You can also\n[filter threads](/workspace/gmail/api/guides/filtering) using the same query parameters as\nfor the [`Message` resource](/workspace/gmail/api/v1/reference/users/messages). If any\nmessage in a thread matches the query, that thread is returned in the result. \n\nThe code sample below demonstrates how to use both methods in a sample that\ndisplays the most chatty threads in your inbox. The `threads.list` method\nfetches all thread IDs, then `threads.get` grabs all messages in each thread.\nFor those with 3 or more replies, we extract the `Subject` line and display the\nnon-empty ones plus the number of messages in the thread. You'll also find this\ncode sample featured in the corresponding DevByte video.\n\n### Python\n\ngmail/snippet/thread/threads.py \n[View on GitHub](https://github.com/googleworkspace/python-samples/blob/main/gmail/snippet/thread/threads.py) \n\n```python\nimport google.auth\nfrom googleapiclient.discovery import build\nfrom googleapiclient.errors import HttpError\n\n\ndef show_chatty_threads():\n \"\"\"Display threads with long conversations(\u003e= 3 messages)\n Return: None\n\n Load pre-authorized user credentials from the environment.\n TODO(developer) - See https://developers.google.com/identity\n for guides on implementing OAuth2 for the application.\n \"\"\"\n creds, _ = google.auth.default()\n\n try:\n # create gmail api client\n service = build(\"gmail\", \"v1\", credentials=creds)\n\n # pylint: disable=maybe-no-member\n # pylint: disable:R1710\n threads = (\n service.users().threads().list(userId=\"me\").execute().get(\"threads\", [])\n )\n for thread in threads:\n tdata = (\n service.users().threads().get(userId=\"me\", id=thread[\"id\"]).execute()\n )\n nmsgs = len(tdata[\"messages\"])\n\n # skip if \u003c3 msgs in thread\n if nmsgs \u003e 2:\n msg = tdata[\"messages\"][0][\"payload\"]\n subject = \"\"\n for header in msg[\"headers\"]:\n if header[\"name\"] == \"Subject\":\n subject = header[\"value\"]\n break\n if subject: # skip if no Subject line\n print(f\"- {subject}, {nmsgs}\")\n return threads\n\n except HttpError as error:\n print(f\"An error occurred: {error}\")\n\n\nif __name__ == \"__main__\":\n show_chatty_threads()\n```\n\nAdding drafts and messages to threads\n-------------------------------------\n\nIf you are sending or migrating messages that are a response to another email\nor part of a conversation, your application should add that message to the\nrelated thread. This makes it easier for Gmail users who are participating in\nthe conversation to keep the message in context.\n\nA draft can be added to a thread as part of\n[creating](/workspace/gmail/api/v1/reference/users/drafts/create),\n[updating](/workspace/gmail/api/v1/reference/users/drafts/update), or\n[sending](/workspace/gmail/api/v1/reference/users/drafts/send) a draft message.\nYou can also add a message to a thread as part of\n[inserting](/workspace/gmail/api/v1/reference/users/messages/insert) or\n[sending](/workspace/gmail/api/v1/reference/users/messages/send) a message.\n\nIn order to be part of a thread, a message or draft must meet the following\ncriteria:\n\n1. The requested `threadId` must be specified on the `Message` or `Draft.Message` you supply with your request.\n2. The `References` and `In-Reply-To` headers must be set in compliance with the [RFC 2822](https://tools.ietf.org/html/rfc2822#appendix-A.2) standard.\n3. The `Subject` headers must match.\n\nTake a look at the [creating a draft](/workspace/gmail/api/guides/drafts) or [sending a\nmessage](/workspace/gmail/api/guides/sending) examples. In both cases, you would simply\nadd a `threadId` key paired with a thread ID to a message's metadata, the\n`message` object."]]