Введение в 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. Вот несколько примеров использования:
- Создание отчетов: Сбор информации о файлах (название, размер, дата создания) для формирования отчетов о занятом месте в хранилище, количестве файлов определенного типа и т.д.
- Автоматизация резервного копирования: Периодическое создание копий файлов из определенной папки в другое место.
- Массовая обработка файлов: Выполнение одинаковых действий (например, изменение разрешений доступа, конвертация в другой формат) над группой файлов.
- Интернет-маркетинг: Получение списка файлов с отчетами рекламных кампаний, для дальнейшего анализа и обработки данных.
Получение доступа к Google Drive с помощью Apps Script
Создание нового скрипта Google Apps Script
Создать скрипт Google Apps Script можно несколькими способами:
- Из Google Drive: Нажмите кнопку «Создать» -> «Ещё» -> «Google Apps Script».
- Из Google Sheets, Docs, Forms: Выберите «Инструменты» -> «Редактор скриптов».
- По адресу 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;
}
}
Пошаговое объяснение кода: получение папки, перебор файлов, вывод информации
- Определяем ID папки: В переменной
folderIdнеобходимо указать ID папки, список файлов которой нужно получить. Замените'YOUR_FOLDER_ID'на фактический ID вашей папки. - Получаем объект папки: Вызываем функцию
getFolder(folderId), чтобы получить объект папки по ее ID. ФункцияgetFolderобрабатывает возможные ошибки при получении папки. - Получаем итератор файлов: Вызываем метод
getFiles()объекта папки, чтобы получить итератор файлов. - Перебираем файлы: Используем цикл
whileдля перебора файлов в итераторе. Внутри цикла получаем следующий файл с помощью методаnext(), получаем его имя, размер и ID и выводим эту информацию в лог.
Запуск скрипта и проверка результатов в логе выполнения
Чтобы запустить скрипт, выберите функцию listFilesInFolder в редакторе скриптов и нажмите кнопку «Выполнить». Результаты выполнения скрипта будут выведены в лог (Вид -> Логи).
Продвинутые техники: фильтрация и сортировка файлов
Фильтрация файлов по типу (например, только документы Google Docs)
Для фильтрации файлов по типу можно использовать метод searchFiles() объекта DriveApp с соответствующим запросом. Например, чтобы получить только документы Google Docs, можно использовать следующий запрос: `’mimeType =