使用 gmail api 移动所有早于 X 的线程
Move all threads older than X with gmail api
我有一个文件夹,Archive
我想在其中存储给定日期之前的所有电子邮件。
在 Gmail 网络 UI 中,您可以通过搜索 "in:inbox before:2012/01/01"、select 全部,然后从下拉列表中搜索 "move" 来完成此操作。
我想用 gmail api 来做这件事。我怎样才能做到这一点?我是否需要执行查询然后遍历每个线程来移动它?或者有更好的方法吗?
代码片段/示例或 link api 文档的相关部分的奖励积分。
你说得对。您需要获取每个 threadId 并一次移动它们(可以通过批处理请求实现,但无论如何它们都将计为对您的配额的单独请求)。可能是另一个 API 我不知道的解决方案。
但是使用 Gmail API 您将执行以下操作。
从您的收件箱中获取在给定日期之前收到的所有线程 ID。
GET https://www.googleapis.com/gmail/v1/users/me/threads?fields=nextPageToken%2Cthreads%2Fid&q=n%3Ainbox+before%3A2012%2F01%2F01&key={YOUR_API_KEY}
这将为您提供以下数据:
{
"threads": [
{
"id": "12345"
},
{
"id": "123456"
},
{
.
.
.
}
],
"nextPageToken": "112233"
}
在下一个请求中使用nextPageToken获取更多的threadIds。
GET https://www.googleapis.com/gmail/v1/users/me/threads?pageToken=112233&fields=nextPageToken%2Cthreads%2Fid&q=n%3Ainbox+before%3A2012%2F01%2F01&key={YOUR_API_KEY}
重复上一步,直到响应中没有 nextPageToken。
您现在拥有在给定日期 (2012/01/01) 之前处于活动状态的所有线程。
一一修改。删除收件箱标签并添加存档标签
POST https://www.googleapis.com/gmail/v1/users/me/threads/12345/modify?key={YOUR_API_KEY}
{
"addLabelIds": [
"Archive"
],
"removeLabelIds": [
"INBOX"
]
}
同样,这可以在 batch request 中完成,但仍会算作许多单独的。
根据您拥有的线程数量,您最终可能每秒执行的请求数超过 Google 允许的数量。如果出现错误,请在代码中稍等片刻,然后继续。
我有一个文件夹,Archive
我想在其中存储给定日期之前的所有电子邮件。
在 Gmail 网络 UI 中,您可以通过搜索 "in:inbox before:2012/01/01"、select 全部,然后从下拉列表中搜索 "move" 来完成此操作。
我想用 gmail api 来做这件事。我怎样才能做到这一点?我是否需要执行查询然后遍历每个线程来移动它?或者有更好的方法吗?
代码片段/示例或 link api 文档的相关部分的奖励积分。
你说得对。您需要获取每个 threadId 并一次移动它们(可以通过批处理请求实现,但无论如何它们都将计为对您的配额的单独请求)。可能是另一个 API 我不知道的解决方案。
但是使用 Gmail API 您将执行以下操作。
从您的收件箱中获取在给定日期之前收到的所有线程 ID。
GET https://www.googleapis.com/gmail/v1/users/me/threads?fields=nextPageToken%2Cthreads%2Fid&q=n%3Ainbox+before%3A2012%2F01%2F01&key={YOUR_API_KEY}
这将为您提供以下数据:
{
"threads": [
{
"id": "12345"
},
{
"id": "123456"
},
{
.
.
.
}
],
"nextPageToken": "112233"
}
在下一个请求中使用nextPageToken获取更多的threadIds。
GET https://www.googleapis.com/gmail/v1/users/me/threads?pageToken=112233&fields=nextPageToken%2Cthreads%2Fid&q=n%3Ainbox+before%3A2012%2F01%2F01&key={YOUR_API_KEY}
重复上一步,直到响应中没有 nextPageToken。
您现在拥有在给定日期 (2012/01/01) 之前处于活动状态的所有线程。
一一修改。删除收件箱标签并添加存档标签
POST https://www.googleapis.com/gmail/v1/users/me/threads/12345/modify?key={YOUR_API_KEY}
{
"addLabelIds": [
"Archive"
],
"removeLabelIds": [
"INBOX"
]
}
同样,这可以在 batch request 中完成,但仍会算作许多单独的。
根据您拥有的线程数量,您最终可能每秒执行的请求数超过 Google 允许的数量。如果出现错误,请在代码中稍等片刻,然后继续。