Заметки синтографиста

Как выгрузить все файлы с описанием которые пришли с одного адреса Gmail?

Выгрузить все файлы с описанием (будем считать, что описание — это текст письма, к которому прикреплен файл) с одного адреса Gmail можно несколькими способами, в зависимости от ваших технических навыков и количества писем.

Вот основные подходы:

1. Полуручной метод через клиент электронной почты (например, Thunderbird)

Этот способ подойдет, если писем не тысячи, и вы готовы потратить некоторое время на настройку.

2. Использование Google Apps Script (более автоматизированный способ)

Этот метод требует базового понимания скриптов, но он может создать более структурированный результат, например, сохраняя каждый файл и рядом текстовый файл с описанием (телом письма) в Google Drive.

  1. Откройте Google Drive.
  2. Нажмите "Создать" -> "Еще" -> "Google Apps Script".
  3. Замените код в редакторе на следующий (пример):
function saveAttachmentsWithBodyFromSender() {
  var senderEmail = "адрес_отправителя@example.com"; // <-- ЗАМЕНИТЕ НА НУЖНЫЙ АДРЕС
  var targetFolderName = "Вложения от " + senderEmail; // Название папки на Google Drive

  // Ищем письма от нужного отправителя с вложениями
  var threads = GmailApp.search('from:' + senderEmail + ' has:attachment');
  var driveFolder;

  // Проверяем, есть ли папка, если нет - создаем
  var folders = DriveApp.getFoldersByName(targetFolderName);
  if (folders.hasNext()) {
    driveFolder = folders.next();
  } else {
    driveFolder = DriveApp.createFolder(targetFolderName);
  }

  Logger.log('Найдено потоков писем: ' + threads.length);

  for (var i = 0; i < threads.length; i++) {
    var messages = threads[i].getMessages();
    for (var j = 0; j < messages.length; j++) {
      var message = messages[j];
      var attachments = message.getAttachments();
      var emailBody = message.getPlainBody(); // Получаем текстовое тело письма
      var emailSubject = message.getSubject();
      var emailDate = Utilities.formatDate(message.getDate(), Session.getScriptTimeZone(), "yyyy-MM-dd_HH-mm-ss");

      if (attachments.length > 0) {
        Logger.log('Письмо от ' + emailDate + ' с темой: "' + emailSubject + '" содержит ' + attachments.length + ' вложений.');

        for (var k = 0; k < attachments.length; k++) {
          var attachment = attachments[k];
          var attachmentName = attachment.getName();
          var attachmentBlob = attachment.copyBlob(); // Копируем вложение

          // Создаем уникальное имя для файла и описания, чтобы избежать конфликтов
          var baseName = emailDate + "_" + emailSubject.replace(/[^a-zA-Z0-9_.-]/g, '_') + "_" + attachmentName;
          
          // Сохраняем вложение
          var file = driveFolder.createFile(attachmentBlob.setName(baseName));
          Logger.log('Файл сохранен: ' + file.getName() + ' в папку ' + driveFolder.getName());

          // Сохраняем тело письма как текстовый файл с суффиксом _description
          var descriptionFileName = baseName + "_description.txt";
          var descriptionFile = driveFolder.createFile(descriptionFileName, emailBody, MimeType.PLAIN_TEXT);
          Logger.log('Описание сохранено: ' + descriptionFile.getName() + ' в папку ' + driveFolder.getName());
        }
      }
    }
  }
  Logger.log('Выгрузка завершена. Файлы в папке: ' + driveFolder.getName());
  Browser.msgBox('Выгрузка завершена!', 'Все файлы и описания сохранены в папку "' + driveFolder.getName() + '" на вашем Google Drive.', Browser.Buttons.OK);
}
  1. ВАЖНО: Замените "адрес_отправителя@example.com" на реальный email адрес, с которого нужно выгрузить файлы.
  2. Сохраните скрипт (значок дискеты), дайте ему имя (например, "ExportAttachments").
  3. В меню выберите saveAttachmentsWithBodyFromSender в выпадающем списке рядом с кнопкой "Выполнить" (значок Play).
  4. Нажмите "Выполнить" (значок Play).
  5. При первом запуске скрипт запросит разрешения на доступ к вашему Gmail и Google Drive. Внимательно просмотрите их и предоставьте, если согласны.
  6. Скрипт создаст на вашем Google Drive папку (например, "Вложения от адрес_отправителя@example.com") и в нее будет сохранять каждый файл и рядом текстовый файл с телом письма, имеющий похожее имя с суффиксом _description.txt.

Преимущества Google Apps Script:

Недостатки Google Apps Script:

3. Google Takeout (Архиватор Google)

Этот сервис позволяет выгрузить все ваши данные из Gmail (и других сервисов Google).

  1. Перейдите на Google Takeout.
  2. Нажмите "Отменить выбор" (Deselect all).
  3. Найдите "Почта" (Mail) и поставьте галочку.
  4. Нажмите на кнопку "Выбраны все данные Почты" (All Mail data included).
  5. Здесь можно попробовать отфильтровать письма по ярлыку. Если вы заранее создали ярлык для всех писем от нужного отправителя, выберите только этот ярлык. Если нет, придется выгружать все, а потом искать.
  6. Нажмите "Далее".
  7. Выберите способ получения (ссылка на скачивание по почте, добавить на Диск и т.д.), тип файла (рекомендуется .zip) и размер архива.
  8. Нажмите "Создать экспорт".
  9. Google подготовит архив (это может занять от нескольких минут до нескольких дней в зависимости от объема данных) и пришлет вам уведомление.

После скачивания архива:

Какой способ выбрать?

Рекомендую начать с первого или второго способа. Второй, при правильной настройке, даст наилучший результат для вашей задачи.

Да, удалять по 50 писем – это мучение, когда нужно освободить много места. Вот несколько способов удалить большое количество писем в Gmail:

ВАЖНО: Перед массовым удалением!

  1. Сделайте резервную копию (Google Takeout): Если есть хоть малейший шанс, что какие-то письма могут понадобиться в будущем, СНАЧАЛА сделайте экспорт почты через Google Takeout. Выберите только "Почта" (Mail) и создайте архив. Так вы сможете сохранить все письма локально, прежде чем удалять их из Gmail.
  2. Очистите Корзину и Спам: Часто много места занимают письма в папках "Корзина" (Trash) и "Спам" (Spam). Обязательно очистите их в первую очередь.
    • Перейдите в "Корзина", нажмите "Очистить корзину" (Empty Trash now).
    • Перейдите в "Спам", нажмите "Удалить все сообщения из папки "Спам"" (Delete all spam messages now).

Способы массового удаления писем:

1. Удаление ВСЕХ писем в аккаунте (Самый радикальный способ)

2. Удаление писем по критериям (более щадящий способ)

Если вы не хотите удалять абсолютно все, а, например, только старые письма или письма с большими вложениями:

Для любого из этих поисковых запросов:

  1. После того как Gmail покажет результаты поиска, поставьте галочку в квадратике слева над списком писем.
  2. Если писем больше, чем на одной странице, появится ссылка "Выбрать все цепочки писем, соответствующие этому поисковому запросу". Нажмите на нее.
  3. Нажмите на значок корзины (Удалить).
  4. Очистите Корзину.

3. Использование почтового клиента (например, Thunderbird) по IMAP

Если у вас настроен почтовый клиент (как обсуждали ранее), вы можете:

Важные моменты:

Рекомендуемый порядок, если хотите освободить место, но сохранить что-то важное:

  1. Очистите Спам и Корзину.
  2. Подумайте о резервной копии (Google Takeout).
  3. Удалите письма из категорий "Промоакции" и "Соцсети". Очистите Корзину.
  4. Найдите и удалите письма с самыми большими вложениями (larger:10M, larger:20M). Очистите Корзину.
  5. Найдите и удалите очень старые письма (before:2018/01/01 и т.п.). Очистите Корзину.
  6. Если места все еще мало, тогда уже рассматривайте удаление всей почты из "Вся почта".

Выберите способ, который вам наиболее удобен и безопасен. Удачи!

Понял! На вашем скриншоте слева, под "Промоакции", есть пункт "Ещё" (с маленькой стрелочкой вниз).

  1. Нажмите на этот пункт "Ещё".
  2. Он раскроет список остальных системных папок и ярлыков, и там вы увидите "Вся почта".
  3. Иногда, если ярлыков очень много, "Вся почта" может быть даже чуть ниже после раскрытия "Ещё", придется немного прокрутить список вниз.

Как только вы перейдете в "Вся почта", дальше действуйте как я описывал ранее:

  1. Поставьте галочку в квадратике слева над списком писем (это выберет все письма на текущей странице).
  2. Сразу после этого над списком писем появится сообщение: "Выбраны все цепочки писем (X) на этой странице. Выбрать все цепочки писем (Y) в представлении "Вся почта"."
  3. Нажмите на эту ссылку (выделено жирным). Это выберет АБСОЛЮТНО все письма.
  4. Нажмите значок корзины (Удалить).
  5. Подтвердите удаление.
  6. Перейдите в "Корзину" и очистите её.

Надеюсь, теперь найдется!