Первый пример — переводчик
При написании одного или нескольких слов, они автоматически переводятся на определенные языки.
*Оригинальный код*
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | // Функция onEdit является триггером, который срабатывает при завершении ввода данных в ячейку Таблицы пользователем function onEdit(e) { Logger.log(e); // Получаем диапазон ячеек, в которых произошли изменения var range = e.range; // Лист, на котором производились изменения 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(); // Переводим текст на английский var translatedText = LanguageApp.translate( russianText, // текст 'ru', // с какого языка переводим 'en' // на какой язык переводим ); // Вставляем переведённый текст во вторую колонку sheet.getRange( cell.getRowIndex(), // номер строки 2 // номер столбца ).setValue(translatedText); } } |
Пример работы кода

*Переделанный(добавлено еще 2 языка: эстонский и испанский)*
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | function onEdit(e) { Logger.log(e); // Получаем диапазон ячеек, в которых произошли изменения var range = e.range; // Лист, на котором производились изменения 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(); // Переводим текст на английский var translatedText = LanguageApp.translate( russianText, // текст 'ru', // с какого языка переводим 'en' // на какой язык переводим ); var translatedText2 = LanguageApp.translate( russianText, // текст 'ru', // с какого языка переводим 'et' // на какой язык переводим ); var translatedText3 = LanguageApp.translate( russianText, // текст 'ru', // с какого языка переводим 'es' // на какой язык переводим ); // Вставляем переведённый текст во вторую колонку sheet.getRange( cell.getRowIndex(), // номер строки 2 // номер столбца ).setValue(translatedText); //eesti keel sheet.getRange( cell.getRowIndex(), // номер строки 3 // номер столбца ).setValue(translatedText2); //hispaania keel sheet.getRange( cell.getRowIndex(), // номер строки 4 // номер столбца ).setValue(translatedText3); } } |
Пример работы кода

Второй пример — работа с HTML Service
Открывает боковое окошко, в которой можно вводить определенные данные на выбранную нами строку. После подтверждения, они выводятся в ячейках заданной строки.
*Оригинальный код*
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | // Открытие сайдбара function showSidebar() { // Подключаем Bootstrap var sidebarHTML = '<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">'; // Подключаем jQuery sidebarHTML += '<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>'; // Создаём форму sidebarHTML += '<form style="padding: 20px;text-align:center;">\ <div class="form-group">\ <label for="name">Имя</label>\ <input type="text" class="form-control" id="name" name="name" value="">\ </div>\ <div class="form-group">\ <label for="abrakadabra">Какая-то абракадабра</label>\ <textarea class="form-control" id="abrakadabra" name="abrakadabra" rows="3"></textarea> \ </div>\ <div class="form-group">\ <label for="strNum">Номер строки, в которую необходимо внести данные</label>\ <input type="text" class="form-control" id="strNum" name="strNum" value="">\ </div>\ <button type="submit" class="btn btn-primary">Записать данные в таблицу</button>\ <br><br><br>\ <button type="button" id="sidebarClose" class="btn btn-danger">Закрыть сайдбар</button>\ </form>'; // Добавляем скрипты // При сабмите формы вызываем функцию writeStrInTable() и передаём ей введённые данные // При клике на кнопку 'Закрыть сайдбар' закрываем его sidebarHTML += "<script>\ $(document).on('submit', 'form', function () { \ google.script.run \ .withSuccessHandler(function (resultMsg) { \ alert(resultMsg);\ })\ .writeStrInTable(\ { name: $('#name').val(), abrakadabra: $('#abrakadabra').val(), strNum: $('#strNum').val() }\ );\ return false;\ });\ \ $('#sidebarClose').on('click', function() {\ google.script.host.close();\ });\ </script>"; var htmlOutput = HtmlService .createHtmlOutput(sidebarHTML) .setTitle('My add-on'); SpreadsheetApp.getUi().showSidebar(htmlOutput); } function writeStrInTable(e) { var name = e.name; var abrakadabra = e.abrakadabra; var strNum = parseInt(e.strNum); // Получаем объект с активной (открытой в данный момент) таблицей var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); // Записываем полученные данные в таблицу sheet.getRange("A" + strNum).setValue(name); sheet.getRange("B" + strNum).setValue(abrakadabra); return "Всё прошло успешно!"; } |
Боковая панель, в которую вписываем данные.

Что написали, то выводится на определенную строку с определенными данными.

*Переделанный(добавлена вкладка выставления даты, и переписаны некоторые label’ы)*
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | // Открытие сайдбара function showSidebar() { // Подключаем Bootstrap var sidebarHTML = '<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">'; // Подключаем jQuery sidebarHTML += '<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>'; // Создаём форму sidebarHTML += '<form style="padding: 20px;text-align:center;">\ <div class="form-group">\ <label for="name">Имя клиента</label>\ <input type="text" class="form-control" id="name" name="name" value="">\ </div>\ <div class="form-group">\ <label for="abrakadabra">Что желает купить</label>\ <textarea class="form-control" id="abrakadabra" name="abrakadabra" rows="3"></textarea> \ </div>\ <div class="form-group">\ <label for="strNum">Номер строки, в которую необходимо внести данные</label>\ <input type="text" class="form-control" id="strNum" name="strNum" value="">\ </div>\ <div class="form-group">\ <label for="datata">Дата оформления заказа</label>\ <input type="date" class="form-controll" id="datata" name="datata" value="">\ </div>\ <button type="submit" class="btn btn-primary">Подтвердить</button>\ <br><br><br>\ <button type="button" id="sidebarClose" class="btn btn-danger">Закрыть</button>\ </form>'; // Добавляем скрипты // При сабмите формы вызываем функцию writeStrInTable() и передаём ей введённые данные // При клике на кнопку 'Закрыть сайдбар' закрываем его sidebarHTML += "<script>\ $(document).on('submit', 'form', function () { \ google.script.run \ .withSuccessHandler(function (resultMsg) { \ alert(resultMsg);\ })\ .writeStrInTable(\ { name: $('#name').val(), abrakadabra: $('#abrakadabra').val(), strNum: $('#strNum').val(), datata: $('#datata').val() }\ );\ return false;\ });\ \ $('#sidebarClose').on('click', function() {\ google.script.host.close();\ });\ </script>"; var htmlOutput = HtmlService .createHtmlOutput(sidebarHTML) .setTitle('My add-on'); SpreadsheetApp.getUi().showSidebar(htmlOutput); } function writeStrInTable(e) { var name = e.name; var abrakadabra = e.abrakadabra; var datata=e.datata; var strNum = parseInt(e.strNum); // Получаем объект с активной (открытой в данный момент) таблицей var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); // Записываем полученные данные в таблицу sheet.getRange("A" + strNum).setValue(name); sheet.getRange("B" + strNum).setValue(abrakadabra); sheet.getRange("C" + strNum).setValue(datata); return "Данные записаны!"; } |
Боковая панель, в которую вписываем данные.

Что написали, то выводится на определенную строку с определенными данными.
