Вопрос или проблема
Мне нужна помощь с скриптом, который сохраняет каждую ответ из Google Формы в отдельный TXT файл на моем Google Диске. Я застрял на строке 3: получаю ошибку в “var responses = e.values”
Отладка:
TypeError: Невозможно прочитать свойства неопределенного (чтение 'values')
onFormSubmit @ Código.gs:3
Я был бы очень признателен за любую помощь, которую вы можете оказать!
Ожидаемые результаты:
Та же Google Форма -> ВопросA -> ОтветA -> ОтветA.txt на Google Диске
Та же Google Форма -> ВопросB -> ОтветB -> ОтветB.txt на Google Диске
Вот использованный скрипт:
function onFormSubmit(e) {
// Чтобы получить ответы на форму
var responses = e.values;
// ID папки на Google Диске
var folder = DriveApp.getFolderById('PASTA_ID');
// Сохранение каждого поля в отдельный txt файл
for (var i = 1; i < responses.length; i++) {
var response = responses[i];
// Имя файла на основе поля
var fileName = "resposta_campo_" + i + ".txt";
// Проверка, существует ли файл
var existingFiles = folder.getFilesByName(fileName);
// Если файл существует, удалить его
if (existingFiles.hasNext()) {
var existingFile = existingFiles.next();
existingFile.setTrashed(true); // переместить файл в корзину
}
// Новый файл с новой информацией
folder.createFile(fileName, response);
}
}
Ответ или решение
Конечно! Ниже представлена полная инструкция по настройке скрипта для сохранения ответов из Google Form в отдельные TXT-файлы на Google Drive. Ошибка, которую вы встречаете, связана с тем, что объект e
не передается в вашу функцию. Этот объект передается автоматически при использовании триггера, который мы настроим позже.
Вот шаги для решения вашей проблемы:
- Создание скрипта:
Откройте Google Form, в меню выберите «Расширения» > «Apps Script». Затем замените содержимое файлаCode.gs
на следующий код:
function onFormSubmit(e) {
// Проверяем, что событие e определено
if (!e || !e.values) {
Logger.log("Ошибка: e или e.values неопределены.");
return;
}
// Получаем ответы формы
var responses = e.values;
// ID папки Google Drive
var folder = DriveApp.getFolderById('PASTA_ID'); // замените 'PASTA_ID' на ваш реальный ID папки
// Сохраняем каждый ответ в отдельный TXT файл
for (var i = 1; i < responses.length; i++) {
var response = responses[i];
// Имя файла основано на индексе поля
var fileName = "resposta_campo_" + i + ".txt";
// Проверяем, существует ли файл
var existingFiles = folder.getFilesByName(fileName);
// Если файл существует, перемещаем его в корзину
if (existingFiles.hasNext()) {
var existingFile = existingFiles.next();
existingFile.setTrashed(true); // перемещаем файл в корзину
}
// Создаем новый файл с новой информацией
folder.createFile(fileName, response);
}
}
-
Настройка триггера:
После написания скрипта необходимо установить триггер, чтобы функцияonFormSubmit
вызывалась каждый раз, когда отправляется новая форма. Для этого выполните следующие шаги:- В редакторе скриптов выберите «Триггеры» (или нажмите на значок часов в боковой панели).
- Нажмите на кнопку «Добавить триггер».
- Выберите функцию
onFormSubmit
. - Установите триггер с событиями для «Google Forms» и выберите «При отправке формы» как событие.
- Подтвердите изменения.
-
Тестирование:
Заполните вашу Google Form и отправьте ответ. После этого проверьте указанную папку в Google Drive—должны появиться текстовые файлы с ответами.
Примечание:
- Убедитесь, что вы заменили
'PASTA_ID'
на фактический ID папки в вашем Google Drive, где вы хотите сохранять файлы. - Вам необходимо предоставить вашему скрипту доступ к Google Drive, чтобы он мог создавать файлы.
Теперь ваш скрипт должен работать корректно и создавать текстовые файлы с ответами на вопросы Google Form. Если возникнут дополнительные вопросы или проблемы, не стесняйтесь спрашивать!