Your cart is currently empty!


♦
Jekaterina Guzek, Õpimapp / Portfolio
2. GoogleTable salvestab vormisisestused
3. Lisame GoogleAppsScript
function sendEmailToClient() {
//Текущая Гугл Таблица записана в переменную:
var ss = SpreadsheetApp.getActiveSpreadsheet();
//Лист текущей таблицы с именем "Ответы на форму (1)", в который загружаются ответы из формы, записан в переменную:
var listAnswers = ss.getSheetByName("Avaldus007 (vastus)");
//Получен email клиента из ячейки с адресом: последняя строка, 4 ряд, - и записан в переменную:
var clientEmail = listAnswers.getRange(listAnswers.getLastRow(),2).getValue();
// найдем Имя человека
var nimi = listAnswers.getRange(listAnswers.getLastRow(), 3).getValue();
// Последняя прочиталая книга
var viimane = listAnswers.getRange(listAnswers.getLastRow(), 4).getValue();
// valik - viimane rida kolmas veerg
var valik = listAnswers.getRange(listAnswers.getLastRow(),5).getValue();
// любимая фраза с книги
var lause = listAnswers.getRange(listAnswers.getLastRow(),6).getValue();
//Оценка опросника
var hind = listAnswers.getRange(listAnswers.getLastRow(), 7).getValue();
//Тело письма, отформатированное в html-разметке, записано в переменную:
var bodyvalik1 =
'<strong>📚 Tere, lugemissõber ' + nimi + '! 😊</strong><br/><br/>' +
'Raamatud rikastavad meie hinge ja avardavad sisemaailma! 🌟<br/>' +
'Kas pole imeline, et iga uus raamat viib meid uuele rännakule? 🚀📖<br/><br/>' +
'<strong>📌 Sinu viimane raamat: </strong> ' + viimane + '<br/>' +
'<strong>📚 Veel mida sulle meeldib lugeda: </strong> ' + valik + '<br/>' +
'<strong>💬 Sinu lemmiklause: </strong> "' + lause + '"<br/><br/>' +
'<strong>⭐️ Täname, et hindasite minu küsimustikku: </strong> "' + hind + '"<br/><br/>' +
'☀️ Ilusat lugemist ja rõõmsaid hetki! <br/><br/>' +
'📖 Sinu raamatusõber, <br/> Jekaterina Guzek 📚<br/>' +
'🔗 <a href="https://jekaterinaguzek24.thkit.ee/">Minu leht</a>';
var bodyvalik2 =
'<strong>📚 Tere, lugemissõber ' + nimi + '! 😊</strong><br/><br/>' +
'Kahju, et viimasest lugemisest on möödunud nii palju aega. 😢<br/>' +
'Aga tead, suurepärane raamat ootab sind alati avastamiseks! 📖✨<br/><br/>' +
'<strong>📌 Sinu viimane loetud raamat: </strong> ' + viimane + '<br/>' +
'Kas sa mäletad, milliseid tundeid see sinus tekitas? 💭💖<br/><br/>' +
'<strong>📚 Veel mida sulle meeldib lugeda: </strong> ' + valik + '<br/>' +
'<strong>💬 Sinu lemmiklause: </strong> "' + lause + '"<br/><br/>' +
'<strong>⭐️ Täname, et hindasite minu küsimustikku: </strong> "' + hind + '"<br/><br/>' +
'📖 Võta taas raamat kätte ja naudi uusi lugemishetki! 📚☕<br/><br/>' +
'🌞 Ilusat päeva, <br/> Jekaterina Guzek 📚<br/>' +
'🔗 <a href="https://jekaterinaguzek24.thkit.ee/">Minu leht</a>';
var bodyvalik3 =
'<strong>📚 Tere, ' + nimi + '! 😊</strong><br/><br/>' +
'Mõnikord pole midagi paremat kui võtta ette mõni huvitav raamat ja sukelduda selle maailma! 🌍📖<br/>' +
'Kui soovid soovitusi või abi raamatu valimisel, kirjuta meile julgelt – leiame sulle midagi toredat! 📚🤩<br/><br/>' +
'<strong>📚 Sinu lugemiseelistused: </strong> ' + valik + '<br/>' +
'<strong>💬 Sinu lemmiklause: </strong> "' + lause + '"<br/><br/>' +
'<strong>⭐️ Täname, et hindasite minu küsimustikku: </strong> "' + hind + '"<br/><br/>' +
'🌞 Rõõmsaid lugemishetki ja inspireerivaid leide! 💛📖<br/><br/>' +
'📖 Parimate soovidega, <br/> Jekaterina Guzek 📚<br/>' +
'🔗 <a href="https://jekaterinaguzek24.thkit.ee/">Minu leht</a>';
var bodyvalimata =
'<strong>📚 Tere, ' + nimi + '! 😊</strong><br/><br/>' +
'Näib, et sa ei märkinud, kui kaua sa raamatuid lugenud oled. 📖❓<br/>' +
'Aga ära muretse, tähtis on see, et lugemine pakub rõõmu! 😊💡<br/><br/>' +
'📖 Kui soovid jagada oma lugemiselamusi või otsid uut põnevat raamatut, olen alati siin, et aidata! 📚✨<br/><br/>' +
'🌞 Rõõmsaid lugemishetki! <br/><br/>' +
'📖 Parimate soovidega, <br/> Jekaterina Guzek 📚<br/>' +
'🔗 <a href="https://jekaterinaguzek24.thkit.ee/">Minu leht</a>';
var body;
//Tingimused
if(viimane == 'Täna/eile'){body=bodyvalik1}
else if(viimane == 'Nädal tagasi'){body=bodyvalik2}
else if(viimane == 'Väga kaua aega tagasi'){body=bodyvalik3}
else {body=bodyvalimata}
MailApp.sendEmail(clientEmail, "Teie avaldus on kätte saadud ❤️",'',{htmlBody: body});
}
Minu Vorm: https://forms.gle/ii7eeUBWgZ9fyYy68
Teeme lahti exel siis google appScript
kirjutame ilus kood:
// Функция onEdit является триггером, который срабатывает при завершении ввода данных в ячейку Таблицы пользователем
// https://developers.google.com/apps-script/guides/triggers/#onedite
function onEdit(e) {
Logger.log(e);
// Получаем диапазон ячеек, в которых произошли изменения
// https://developers.google.com/apps-script/reference/spreadsheet/range
var range = e.range;
// Лист, на котором производились изменения
// https://developers.google.com/apps-script/reference/spreadsheet/sheet
var sheet = range.getSheet();
// Проверяем, нужный ли это нам лист
Logger.log(sheet.getName());
if (sheet.getName() != 'Перевод текста') {
return false;
}
// Переводить необходимо текст, введённый только в первую колонку.
// Проверяем стартовую позицию диапазона
Logger.log(range.getColumn());
if (range.getColumn() != 1) {
return false;
}
for (var i = 1; i <= range.getNumRows(); i++) {
var cell = range.getCell(
i, // номер строки
1 // номер колонки
);
// Получаем текст на русском
var russianText = cell.getValue();
// Переводим текст на английский
// https://developers.google.com/apps-script/reference/language/language-app
// https://cloud.google.com/translate/docs/languages
var translatedText = LanguageApp.translate(
russianText, // текст
'ru', // с какого языка переводим
'en' // на какой язык переводим
);
var translatedText2 = LanguageApp.translate(
russianText, // текст
'ru', // с какого языка переводим
'et' // на какой язык переводим
);
var translatedText3 = LanguageApp.translate(
russianText, // текст
'ru', // с какого языка переводим
'fr' // на какой язык переводим
);
var translatedText4 = LanguageApp.translate(
russianText, // текст
'ru', // с какого языка переводим
'nl' // на какой язык переводим
);
// Вставляем переведённый текст во вторую колонку
sheet.getRange(
cell.getRowIndex(), // номер строки
2 // номер столбца
).setValue(translatedText);
// Вставляем переведённый текст во третью колонку
sheet.getRange(
cell.getRowIndex(), // номер строки
3 // номер столбца
).setValue(translatedText2);
// Вставляем переведённый текст во четвертую колонку
sheet.getRange(
cell.getRowIndex(), // номер строки
4 // номер столбца
).setValue(translatedText3);
// Вставляем переведённый текст во четвертую колонку
sheet.getRange(
cell.getRowIndex(), // номер строки
5 // номер столбца
).setValue(translatedText4);
}
}
Edasi salvesatme, ja provime
NB! kui kirjutab viga , ikka töötab
var range = e.range;
Kontrollime
Mul on kaks näided:
// Функция onOpen() запускается всегда при открытии документа
// https://developers.google.com/apps-script/guides/triggers/#onopen
function onOpen() {
// Создаём новое меню
// https://developers.google.com/apps-script/reference/base/ui#createmenucaption
SpreadsheetApp.getUi()
.createMenu('Konspekti näited')
.addItem('Translate script', 'onEdit')
.addToUi();
}
Siin on ainult 1 item
Teine näide, kus mull on 5 items, kood:
function avaMenyy(){
// lisa uus menüü Google tabelite juurde
var programm=SpreadsheetApp.getActiveSpreadsheet();
var menyy=[
{name: 'Add Table andmed', functionName: 'add1'},
{name: 'Add Table leht Lisa', functionName: 'addTable'},
{name: 'borders', functionName: 'borders'},
{name: 'Add Kogus ja Kokku Tablisse andmed', functionName: 'add2'},
{name: 'Kokku suuma loetamine', functionName: 'kokkusum'},
]
programm.addMenu('Script_Funktsioonid', menyy);
}
Menyy:
Teeme tabel –>
Ja siis vaatame kuidas tehtud
kalender siin ja teeme midagi saama
function SetCalendar() {
// Начальная строка и столбец, где начинается расписание
const rowStart = 1; // строка, где у тебя начинаются данные
const colStart = 1; // колонка A (дата)
const colsCount = 5; // A–E
const rowsCount = 22; // до строки 43
// Получаем таблицу и диапазон данных
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange(rowStart, colStart, rowsCount, colsCount);
var data = range.getDisplayValues();
// Индексы столбцов (относительно начала диапазона)
const dateCol = 0; // A — дата
const timeCol = 1; // B — время
const roomCol = 2; // C — аудитория (будет как название)
const subjectCol = 3; // D — предмет
const teacherCol = 4; // E — преподаватель
// Получаем календарь пользователя
var calendar = CalendarApp.getDefaultCalendar();
// Переменная для хранения последней указанной даты
var currentDate = "";
// Проходим по всем строкам
for (var i = 0; i < data.length; i++) {
var row = data[i];
// Если в ячейке с датой есть значение — обновляем текущую дату
if (row[dateCol]) {
currentDate = row[dateCol];
}
// Получаем остальные значения
var classDate = currentDate;
var classPeriod = row[timeCol];
var classRoom = row[roomCol];
var className = row[subjectCol];
var classTeacher = row[teacherCol];
Logger.log("Обработка строки " + (rowStart + i));
Logger.log("Дата: " + classDate + ", Время: " + classPeriod);
// Если дата и время заданы, создаём событие
if (classDate && classPeriod) {
try {
// Разбиваем время на начало и конец
var [startTimeStr, endTimeStr] = classPeriod.split("-");
var [day, month, year] = classDate.split(".");
var [startHour, startMinute] = startTimeStr.split(":");
var [endHour, endMinute] = endTimeStr.split(":");
// Формируем объекты Date
var startDate = new Date(year, month - 1, day, startHour, startMinute);
var endDate = new Date(year, month - 1, day, endHour, endMinute);
// Описание события
var description = className + " (" + classRoom + ") с " + classTeacher;
// Создаём событие
calendar.createEvent(className, startDate, endDate, {
description: description,
location: classRoom
});
Logger.log("✅ Событие добавлено: " + className);
} catch (error) {
Logger.log("❌ Ошибка при добавлении события: " + error);
}
} else {
Logger.log("⚠️ Пропущена строка из-за отсутствия даты или времени.");
}
Logger.log("===================================");
}
}
Nüüd kontrollime kas töötab ja kuidas tema lisab andmed
logid kõik näitab ilusti
ja oma kaalendris kõik ilusti pandud