Google Apps Script: Получение списка всех файлов в папке

Введение в Google Apps Script и работу с файлами

Что такое Google Apps Script и его возможности

Google Apps Script – это облачный язык сценариев, разработанный Google для автоматизации задач в Google Workspace (ранее G Suite). Он позволяет расширять функциональность приложений Google, таких как Google Sheets, Docs, Drive, Gmail и Calendar. С помощью Apps Script можно создавать собственные функции, автоматизировать рутинные процессы, интегрировать различные сервисы Google и сторонние API, а также разрабатывать веб-приложения.

Обзор сервиса Google Drive и его API

Google Drive – это облачное хранилище файлов, предоставляемое Google. Google Drive API предоставляет интерфейс для программного доступа к файлам и папкам, хранящимся в Google Drive. С помощью этого API можно загружать, скачивать, удалять, перемещать файлы, создавать папки, управлять разрешениями доступа и выполнять другие операции.

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

Получение списка файлов в папке – одна из самых распространенных задач при работе с Google Drive API. Вот несколько примеров использования:

  1. Создание отчетов: Сбор информации о файлах (название, размер, дата создания) для формирования отчетов о занятом месте в хранилище, количестве файлов определенного типа и т.д.
  2. Автоматизация резервного копирования: Периодическое создание копий файлов из определенной папки в другое место.
  3. Массовая обработка файлов: Выполнение одинаковых действий (например, изменение разрешений доступа, конвертация в другой формат) над группой файлов.
  4. Интернет-маркетинг: Получение списка файлов с отчетами рекламных кампаний, для дальнейшего анализа и обработки данных.

Получение доступа к Google Drive с помощью Apps Script

Создание нового скрипта Google Apps Script

Создать скрипт Google Apps Script можно несколькими способами:

  1. Из Google Drive: Нажмите кнопку «Создать» -> «Ещё» -> «Google Apps Script».
  2. Из Google Sheets, Docs, Forms: Выберите «Инструменты» -> «Редактор скриптов».
  3. По адресу script.google.com.

Авторизация скрипта для доступа к Google Drive

Перед тем, как скрипт сможет получить доступ к Google Drive, необходимо предоставить ему соответствующие разрешения. При первом запуске скрипта, обращающегося к Drive API, Google запросит авторизацию. Необходимо подтвердить, что вы доверяете скрипту доступ к вашим данным.

Обзор объекта DriveApp и его основных методов

Объект DriveApp – это основной интерфейс для работы с Google Drive в Apps Script. Он предоставляет методы для доступа к файлам, папкам и другим ресурсам Drive.

  • DriveApp.getFolderById(id): Получает папку по ее ID.
  • DriveApp.getRootFolder(): Получает корневую папку Drive.
  • DriveApp.getFiles(): Получает итератор всех файлов в Drive.
  • DriveApp.createFile(name, content, mimeType): Создает новый файл.
  • DriveApp.searchFiles(query): Поиск файлов по заданному запросу.

Получение списка файлов в папке: основные методы и функции

Метод getFolderById(id): получение папки по ID

Метод getFolderById(id) объекта DriveApp позволяет получить объект папки, зная ее уникальный ID. ID папки можно найти в URL папки в Google Drive (например, https://drive.google.com/drive/folders/YOUR_FOLDER_ID).

/**
 * Получает папку по ее ID.
 * @param {string} folderId ID папки.
 * @return {Folder} Объект папки или null, если папка не найдена.
 */
function getFolder(folderId: string): GoogleAppsScript.Drive.Folder | null {
  try {
    const folder: GoogleAppsScript.Drive.Folder = DriveApp.getFolderById(folderId);
    return folder;
  } catch (e) {
    Logger.log(`Ошибка при получении папки: ${e}`);
    return null;
  }
}

Метод getFiles(): получение итератора файлов в папке

Метод getFiles() объекта Folder возвращает итератор (FileIterator), который позволяет перебирать файлы, содержащиеся в папке. Итератор предоставляет методы hasNext() и next() для последовательного доступа к файлам.

Использование цикла while(fileIterator.hasNext()) для перебора файлов

Для перебора файлов в папке необходимо использовать цикл while в сочетании с методами hasNext() и next() итератора. Метод hasNext() возвращает true, если в итераторе еще есть файлы, и false в противном случае. Метод next() возвращает следующий файл в итераторе.

Получение информации о файле: название, ID, размер, тип и т.д.

Объект File предоставляет методы для получения информации о файле:

  • getName(): Возвращает название файла.
  • getId(): Возвращает ID файла.
  • getSize(): Возвращает размер файла в байтах.
  • getMimeType(): Возвращает MIME-тип файла.
  • getDateCreated(): Возвращает дату создания файла.
  • getLastUpdated(): Возвращает дату последнего обновления файла.

Пример кода: получение и вывод списка файлов в лог

Полный код скрипта для получения списка файлов

/**
 * Получает список файлов в указанной папке и выводит информацию о них в лог.
 */
function listFilesInFolder(): void {
  const folderId: string = 'YOUR_FOLDER_ID'; // Замените на ID вашей папки
  const folder: GoogleAppsScript.Drive.Folder | null = getFolder(folderId);

  if (!folder) {
    Logger.log('Папка не найдена.');
    return;
  }

  const files: GoogleAppsScript.Drive.FileIterator = folder.getFiles();

  Logger.log(`Список файлов в папке: ${folder.getName()}`);

  while (files.hasNext()) {
    const file: GoogleAppsScript.Drive.File = files.next();
    const fileName: string = file.getName();
    const fileSize: number = file.getSize();
    const fileId: string = file.getId();

    Logger.log(`- ${fileName} (ID: ${fileId}, Размер: ${fileSize} байт)`);
  }
}

/**
 * Получает папку по ее ID.
 * @param {string} folderId ID папки.
 * @return {Folder} Объект папки или null, если папка не найдена.
 */
function getFolder(folderId: string): GoogleAppsScript.Drive.Folder | null {
  try {
    const folder: GoogleAppsScript.Drive.Folder = DriveApp.getFolderById(folderId);
    return folder;
  } catch (e) {
    Logger.log(`Ошибка при получении папки: ${e}`);
    return null;
  }
}

Пошаговое объяснение кода: получение папки, перебор файлов, вывод информации

  1. Определяем ID папки: В переменной folderId необходимо указать ID папки, список файлов которой нужно получить. Замените 'YOUR_FOLDER_ID' на фактический ID вашей папки.
  2. Получаем объект папки: Вызываем функцию getFolder(folderId), чтобы получить объект папки по ее ID. Функция getFolder обрабатывает возможные ошибки при получении папки.
  3. Получаем итератор файлов: Вызываем метод getFiles() объекта папки, чтобы получить итератор файлов.
  4. Перебираем файлы: Используем цикл while для перебора файлов в итераторе. Внутри цикла получаем следующий файл с помощью метода next(), получаем его имя, размер и ID и выводим эту информацию в лог.

Запуск скрипта и проверка результатов в логе выполнения

Чтобы запустить скрипт, выберите функцию listFilesInFolder в редакторе скриптов и нажмите кнопку «Выполнить». Результаты выполнения скрипта будут выведены в лог (Вид -> Логи).

Продвинутые техники: фильтрация и сортировка файлов

Фильтрация файлов по типу (например, только документы Google Docs)

Для фильтрации файлов по типу можно использовать метод searchFiles() объекта DriveApp с соответствующим запросом. Например, чтобы получить только документы Google Docs, можно использовать следующий запрос: `’mimeType =


Добавить комментарий