Введение в 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 =