スレッドの管理

Gmail API は Thread リソースを使用する 元のメッセージを含む返信メールを 1 つのスレッドにグループ化したり、 使用します。これにより、会話内のすべてのメッセージを順に取得し、 メッセージのコンテキストを把握したり、検索結果を絞り込んだりするのが簡単になります。

メッセージと同様に、スレッドには ラベルが表示されます。ただし、メッセージとは異なり、スレッドは作成できません。 削除されます。ただし、メッセージはスレッドに挿入できます。

目次

スレッドの取得

スレッドを使用すると、会話内のメッセージを順に簡単に取得できます。 スレッドのリストを表示して、メッセージを会話ごとにグループ化できます。 追加情報を提供しますスレッドのリストは、 threads.list メソッドまたは取得 特定のスレッドに threads.get。また、 同じクエリ パラメータを使用してスレッドをフィルタする Message リソースの。該当する場合 一致する場合は、そのスレッドが結果に返されます。

次のコードサンプルは、2 つのメソッドをサンプル内で使用する方法を示しています。 には、受信トレイ内のやり取りの多いスレッドが頻繁に表示されます。threads.list メソッド すべてのスレッド ID をフェッチし、次に threads.get は各スレッドのすべてのメッセージを取得します。 返信が 3 件以上の場合は、Subject 行を抽出して、 空でない数とスレッド内のメッセージの数を足した数です。また、 コードサンプルは、対応する DevByte の動画で紹介されています。

Python

gmail/snippet/thread/threads.py
import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError


def show_chatty_threads():
  """Display threads with long conversations(>= 3 messages)
  Return: None

  Load pre-authorized user credentials from the environment.
  TODO(developer) - See https://developers.google.com/identity
  for guides on implementing OAuth2 for the application.
  """
  creds, _ = google.auth.default()

  try:
    # create gmail api client
    service = build("gmail", "v1", credentials=creds)

    # pylint: disable=maybe-no-member
    # pylint: disable:R1710
    threads = (
        service.users().threads().list(userId="me").execute().get("threads", [])
    )
    for thread in threads:
      tdata = (
          service.users().threads().get(userId="me", id=thread["id"]).execute()
      )
      nmsgs = len(tdata["messages"])

      # skip if <3 msgs in thread
      if nmsgs > 2:
        msg = tdata["messages"][0]["payload"]
        subject = ""
        for header in msg["headers"]:
          if header["name"] == "Subject":
            subject = header["value"]
            break
        if subject:  # skip if no Subject line
          print(f"- {subject}, {nmsgs}")
    return threads

  except HttpError as error:
    print(f"An error occurred: {error}")


if __name__ == "__main__":
  show_chatty_threads()

スレッドに下書きやメッセージを追加する

別のメールに対する返信であるメッセージを送信または移行する場合 メッセージを会話の一部または全体に追加すると、そのメッセージを 表示されます。これにより、 前後関係が保たれます。

下書きは、テストの一環としてスレッドに追加でき、 作成更新 下書きのメッセージを送信する。 スペース名をクリックしてスレッドにメッセージを 挿入または 送信します。

スレッドに参加するには、メッセージまたは下書きが次の要件を満たしている必要があります。 条件:

  1. リクエストされた threadId は、Message または Draft.Message を返します。
  2. References ヘッダーと In-Reply-To ヘッダーは、 RFC 2822 標準。
  3. Subject ヘッダーは一致している必要があります。

下書きの作成または 例を示します。どちらの場合も、 threadId キーとスレッド ID のペアをメッセージのメタデータに追加する message オブジェクト。