【问题标题】:Gmail API ID is not working but and thread ID is workingGmail API ID 不工作,但线程 ID 工作
【发布时间】:2019-01-27 09:59:59
【问题描述】:

当我查询 Gmail API 时

results = service.users().messages().list(userId='me',q="from:xyz@wso2.com", maxResults=10).execute()

我得到了这个输出。这里我没有收到所有消息它只返回了Thread Idid

"messages": [
  {
   "id": "1655b9b497dc76aa",
   "threadId": "165380da74833127"
  },
  {
   "id": "1655b9a7409383dd",
   "threadId": "1655b9a7409383dd"
  },
  {
   "id": "1655b9a25c441268",
   "threadId": "16470b77316be7ab"
  },
  {....

为了得到消息,我必须再次查询。这里的问题是,当我使用 Id 查询时,它返回 400 错误,但是当我使用线程时,它返回带有 sn-p 的消息。但是在documentation中,他们已经明确提到我们要给出id

id -    string  - The ID of the message to retrieve.
  1. Thread Id 和 Id 有什么区别?
  2. 我不能查询所有字段吗-

“labelIds”:[ “未读”, "CATEGORY_FORUMS", “收件箱” ], “sn-p”:“嗨,Amanda、Ruwan 和 Mifan,我们已经完成了与 Verizon 的 RFP 回合!请您查看 RFP 并开始 在做这个吗?如果我们需要让 WSO2 电信公司参与进来,请告诉我。 谢谢,”, "historyId": "5217959", “内部日期”:“1534833021000”....

作为一个没有查询的JSON,一次又一次,使用每个ID?如果我查询那么多时间,因为我必须查询 150000 个 ID,Google API 似乎可能会阻止我使用节流机制。

【问题讨论】:

    标签: python google-api gmail gmail-api google-api-python-client


    【解决方案1】:

    来自文档Message resource,响应中的每条消息都返回一个。

    id string 消息的不可变ID。

    threadId string 消息所属线程的ID。要将消息或草稿添加到线程,必须满足以下条件:

    • 必须在随请求提供的 Message 或 Draft.Message 中指定请求的 threadId。
    • 必须按照 RFC 2822 标准设置 References 和 In-Reply-To 标头。 - 主题标头必须匹配。

    你不能在 message.threadid 上使用message.get message.get 需要一个 message.id

    我不能在不使用每个 ID 一次又一次查询的情况下将所有消息作为 JSON 查询吗?如果我查询那么多时间,因为我必须查询 150000 个 ID,Google API 似乎可能会阻止我使用节流机制。

    没有可以返回的 maxResults 的限制。我认为它在 100 左右,但我没有看到它记录在案。您将不得不使用请求中返回的 nextPageToken 来获取下一页结果。您提出请求的速度是有限制的。因此,请保持合理,否则您将受到限制。

    针对问题编辑进行更新

    我不能查询所有字段吗-

    如果您使用 fields=* Doc on fields paramater 运行以下命令

    results = service.users().messages().list(userId='me',q="from:xyz@wso2.com", maxResults=10,fields=*).execute()
    

    你会注意到响应是一样的

       {
       "id": "1655bb6d0f2b5f8f",
       "threadId": "1655bb6d0f2b5f8f"
        },
    

    这就是files.list 响应中的所有字段。如果您想了解更多信息,您必须发送message.get

    Gmail 配额

    因此,Gmail 的配额很大。其中大部分还可以扩展。

    【讨论】:

    • "你不能在线程 id 上发送 message.get 需要 message.id",但尝试它不起作用。他们提到的ID是threadid @DalmTo developers.google.com/gmail/api/v1/reference/users/messages/get
    • @Sathiyakugan 你已经编辑了你的问题,我现在更新了我的答案。
    • 所以即使我在一次查询中获得了 100 个 id 以获取那些我必须再次查询 100 次的字段,不是吗?
    • 基本上。欢迎来到烦人的 Gmail api 开发世界:(
    • 重要提示:如果您需要申请延长配额,请尽早申请,当您达到配额的 80% 时,可能需要一个月才能获得批准。
    猜你喜欢
    • 2020-03-14
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多