Есть ли способ получить размеры сообщений Gmail в скрипте Google Apps?

В настоящее время у меня есть скрипт Python, который использует IMAP для получения размера каждого сообщения в моей учетной записи Gmail и представления этой информации различными полезными способами, например, с разбивкой по отправителю. Я хотел бы написать скрипт Google Apps, который делает то же самое, но у меня возникли проблемы.

Я не могу найти простой способ получить размер сообщений в Gmail из скрипта. Я вижу, что могу вызвать getRawContent(), и я предполагаю, что длины этой строки плюс размер вложений сообщения должно быть достаточно для определения размера сообщения. Однако getRawContent() предположительно считается чтением, а квота составляет 20 000 операций чтения в день. В таком случае потребуется несколько дней, чтобы определить размер всех сообщений в моем почтовом ящике! (Мой текущий метод IMAP занимает всего несколько минут.)

Есть ли способ получить размер сообщения без чтения всего содержимого сообщения и использования квоты на чтение?


person Josh    schedule 26.09.2016    source источник


Ответы (2)


Вы можете использовать "расширенную службу Gmail. "

Служба Advanced Gmail позволяет использовать API Gmail в Apps Script. Подобно встроенной службе Gmail Apps Script, этот API позволяет скриптам находить и изменять темы, сообщения и ярлыки в почтовом ящике Gmail. В большинстве случаев встроенная служба проще в использовании, но эта расширенная служба предоставляет несколько дополнительных функций и доступ к более подробной информации о содержимом Gmail.

Я не пробовал это, но в документации сказано:

Подробную информацию об этой службе см. в справочной документации по Gmail API. Как и все расширенные службы в Apps Script, расширенная служба Gmail использует те же объекты, методы и параметры, что и общедоступный API.

Это позволит получить sizeEstimate ( для сообщения) и размер (для вложения) .

Надеюсь, поможет!

person Mr.Rebot    schedule 27.09.2016

person    schedule
comment
Ответ примерно такой, с оговоркой, что sizeEstimate и getSize возвращают свой ответ в байтах, поэтому вам нужно разделить на 1024 ^ 2, чтобы получить МБ. Я не уверен, почему вы должны учитывать размер вложения отдельно, поскольку в документах явно подразумевается, что размер сообщения включает вложения. - person Josh; 18.03.2017
comment
Кроме того, есть разница между потоками и сообщениями — возможно, идентификаторы потоков совпадают с идентификаторами сообщений первого сообщения, что объясняет, почему это работает, но на самом деле это не учитывает размер других сообщений в потоке. (или вложения в другие сообщения). - person Josh; 18.03.2017
comment
В любом случае... этот API также ограничен по скорости - это займет более 30 минут для работы со всей почтой и потребует проверки сообщений об ошибках превышения квоты (или просто консервативного ограничения скорости), а также разделения задачи на несколько запусков. (поскольку выполнение скрипта приложений ограничено 4 минутами). По-прежнему гораздо быстрее и проще сделать это через IMAP. - person Josh; 18.03.2017