Подтвердить что ты не робот

Массовые электронные письма в новом API Gmail

Я использую версию python недавно выпущенного API Gmail от Google.

Следующий вызов возвращает только список идентификаторов сообщений:

service.users().messages().list(userId = 'me').execute()

Но тогда у меня просто есть список идентификаторов сообщений и вам нужно перебирать их по очереди и извлекать их по одному.

Есть ли способ получить весь контент сообщения для списка идентификаторов в одном вызове? (Аналогично тому, как это делается в API календаря Google)?

И если не поддерживается, это то, что Google хотел бы рассмотреть, добавляя в API?

Update

Вот решение, которое сработало для меня:
batch = BatchHttpRequest() for msg_id in message_ids: batch.add(service.users().messages().get(userId = 'me', id = msg_id['id']), callback = mycallbackfunc) batch.execute()

4b9b3361

Ответ 1

Вот пример пакетного запроса в Java, где я получаю все потоки с помощью идентификаторов потоков. Это может быть легко адаптировано для ваших нужд.

BatchRequest b = service.batch();
//callback function. (Can also define different callbacks for each request, as required)
JsonBatchCallback<Thread> bc = new JsonBatchCallback<Thread>() {

    @Override
    public void onSuccess(Thread t, HttpHeaders responseHeaders)
            throws IOException {
        System.out.println(t.getMessages().get(0).getPayload().getBody().getData());
    }

    @Override
    public void onFailure(GoogleJsonError e, HttpHeaders responseHeaders)
            throws IOException {

    }
};

// queuing requests on the batch requests
for (Thread thread : threads) {
    service.users().threads().get("me", threads.getId()).queue(b, bc);
}


b.execute();

Ответ 2

Вот решение, которое сработало для меня:

batch = BatchHttpRequest()
for msg_id in message_ids:
    batch.add(service.users().messages().get(userId='me', id=msg_id['id']), callback=mycallbackfunc)
batch.execute()