Что такое Google Apps Script и его возможности
Google Apps Script — это облачная платформа сценариев, позволяющая автоматизировать задачи и расширять функциональность Google Workspace (Sheets, Docs, Forms, Drive и т. д.). С помощью Apps Script можно создавать пользовательские функции, триггеры, меню и диалоговые окна, а также интегрироваться с другими веб-сервисами.
Зачем необходимо выбирать файлы в Google Apps Script
Выбор файлов необходим во многих сценариях, например:
Импорт данных: загрузка данных из файлов (CSV, Excel) в Google Sheets.
Обработка документов: выбор шаблона для создания новых документов в Google Docs.
Работа с медиафайлами: загрузка изображений или видео в Google Drive.
Автоматизация маркетинговых задач: Выбор целевой аудитории для контекстной рекламы на основе данных из файлов.
Обзор доступных методов и API для выбора файлов
Существует несколько способов реализации выбора файлов в Google Apps Script:
File Picker API: Предоставляет стандартизированный интерфейс для выбора файлов из Google Drive. Это рекомендуемый способ, но требует настройки Google Cloud Project.
Drive API: Позволяет программно искать и выбирать файлы в Google Drive. Более гибкий, но требует больше кода.
HTML Service: Создание пользовательского интерфейса выбора файлов с использованием HTML, CSS и JavaScript. Подходит для сложных сценариев.
Использование File Picker API для выбора файлов
Настройка и активация File Picker API в Google Cloud Project
Прежде чем использовать File Picker API, необходимо его активировать в вашем Google Cloud Project:
Откройте Google Cloud Console.
Выберите или создайте проект.
Включите File Picker API.
Создайте учетные данные (OAuth 2.0 client ID) для веб-приложения.
Реализация интерфейса выбора файлов с использованием HTML Service
Для отображения интерфейса выбора файлов используйте HTML Service. Необходимо создать HTML-страницу, которая вызывает File Picker API.
Обработка выбранных файлов и получение их метаданных (ID, Name, Size)
После выбора файла, API возвращает объект с информацией о выбранном файле. Важно получить ID файла для дальнейшей работы с ним через Drive API.
Пример кода: Простой выбор файла и вывод информации о нем
/**
* @OnlyCurrentDoc
*/
/**
* Отображает диалог выбора файла.
*/
function showFilePicker() {
const html = HtmlService.createHtmlOutputFromFile('filePicker')
.setWidth(600)
.setHeight(450);
SpreadsheetApp.getUi()
.showModalDialog(html, 'Выберите файл');
}
/**
* Функция, вызываемая из HTML для запуска File Picker API.
* @return {string} ID файла.
*/
function openFilePicker() {
const clientId = 'YOUR_CLIENT_ID'; // Замените на ваш Client ID
const appId = 'YOUR_APP_ID'; // Замените на ваш App ID
const picker = new google.picker.PickerBuilder()
.addView(new google.picker.DocsView())
.setOAuthToken(ScriptApp.getOAuthToken())
.setDeveloperKey(appId)
.setCallback(pickerCallback)
.build();
picker.setVisible(true);
return;
}
/**
* Callback-функция для File Picker API.
* @param {Object} data Объект с информацией о выбранном файле.
*/
function pickerCallback(data) {
let fileId = '';
if (data[google.picker.Response.ACTION] == google.picker.Action.PICKED) {
const doc = data[google.picker.Response.DOCUMENTS][0];
fileId = doc[google.picker.Document.ID];
const file = DriveApp.getFileById(fileId);
const fileName = file.getName();
const fileSize = file.getSize();
Logger.log('Выбран файл: ' + fileName + ', ID: ' + fileId + ', Размер: ' + fileSize + ' bytes');
// Здесь можно добавить код для дальнейшей обработки файла
SpreadsheetApp.getActiveSpreadsheet().toast('Выбран файл: ' + fileName);
}
}
/**
* Функция для создания меню.
*/
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('Выбор файла')
.addItem('Открыть File Picker', 'showFilePicker')
.addToUi();
}filePicker.html:
// Load the Google Picker API.
google.load('picker', '1', {
callback: function() {
google.setOnLoadCallback(createPicker);
}
});
function createPicker() {
google.script.run
.withSuccessHandler(function(fileId) {
console.log('File ID:', fileId);
})
.openFilePicker();
}
Выбор файла...
Не забудьте заменить YOUR_CLIENT_ID и YOUR_APP_ID на ваши реальные значения.
Интеграция выбора файлов в Google Sheets и Docs
Создание пользовательского меню в Google Sheets/Docs для запуска выбора файлов
Функция onOpen() создает пользовательское меню, которое позволяет запустить диалог выбора файлов непосредственно из интерфейса Google Sheets или Docs.
Получение списка выбранных файлов и запись информации в таблицу Google Sheets
После выбора файла можно получить его ID, имя, размер и другие метаданные, а затем записать эту информацию в таблицу Google Sheets.
Пример: Автоматическая вставка ссылок на выбранные файлы в Google Doc
Можно создать функцию, которая автоматически вставляет ссылки на выбранные файлы в Google Doc. Это полезно, например, для создания отчетов или дайджестов.
Альтернативные методы и обходные пути
Использование Drive API для поиска и выбора файлов (если File Picker API недоступен)
Если File Picker API недоступен (например, из-за ограничений Google Cloud Project), можно использовать Drive API для поиска и выбора файлов. Это требует больше кода, но предоставляет большую гибкость.
/**
* Ищет файлы в Google Drive по имени.
* @param {string} fileName Имя файла для поиска.
* @return {Array} Список найденных файлов.
*/
function findFilesByName(fileName) {
const files = DriveApp.searchFiles('title contains ".' + fileName + '."');
const result = [];
while (files.hasNext()) {
const file = files.next();
result.push(file);
}
return result;
}Реализация простого диалога выбора файлов с использованием Sidebar или Modal Dialog
С помощью HTML Service можно создать собственный диалог выбора файлов, который отображается в Sidebar или Modal Dialog. Это позволяет создать более кастомизированный интерфейс.
Ограничения и лучшие практики при работе с выбором файлов
Авторизация: Убедитесь, что у пользователя есть необходимые права доступа к выбранным файлам.
Обработка ошибок: Предусмотрите обработку ошибок, например, если пользователь не выбрал файл или файл не существует.
Производительность: Оптимизируйте код для работы с большим количеством файлов.
Безопасность: Защитите ваши учетные данные (Client ID, App ID).
Заключение
Обзор рассмотренных методов выбора файлов
Мы рассмотрели три основных способа реализации выбора файлов в Google Apps Script: File Picker API, Drive API и HTML Service. Каждый метод имеет свои преимущества и недостатки, и выбор зависит от конкретной задачи.
Советы по оптимизации и улучшению пользовательского опыта
Используйте File Picker API, если это возможно, так как он предоставляет стандартизированный и удобный интерфейс.
Предоставляйте пользователю обратную связь о процессе выбора файла (например, отображайте имя выбранного файла).
Оптимизируйте код для работы с большим количеством файлов.