Вы правы на деньги. Вам нужно получить каждый threadId и перемещать их по одному (может быть достигнуто пакетным запросом, но в любом случае они будут считать индивидуальные запросы к вашей квоте). Возможно, это еще одно решение с другим API, о котором я не знаю.
Но с помощью API Gmail вы должны сделать следующее.
Получить все threadIds из вашего почтового ящика, которое было получено до указанной даты.
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).
Изменяйте их один за другим. Удалите INBOX-метку и добавить архивно-метку
POST https://www.googleapis.com/gmail/v1/users/me/threads/12345/modify?key={YOUR_API_KEY}
{
"addLabelIds": [
"Archive"
],
"removeLabelIds": [
"INBOX"
]
}
Опять же, это может быть сделано в batch request, но все равно будет считать, как много отдельных.
В зависимости от того, сколько потоков у вас есть, вы можете делать больше запросов в секунду, чем позволяет Google. Если вы получите сообщение об ошибке, подождите некоторое время в своем коде и продолжайте.