// Функция onEdit является триггером, который срабатывает при завершении ввода данных в ячейку Таблицы пользователем
// https://developers.google.com/apps-script/guides/triggers/#onedite
function onOpen(){
  SpreadsheetApp.getUi()
  .createMenu('Konspekti näited')
  .addItem('пример ....', '....')

  .addToUi();
}

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' // на какой язык переводим
    );
    let translatedText2 = LanguageApp.translate(
      russianText, // текст
      'ru', // с какого языка переводим
      'fr' // на какой язык переводим
    );
    let translatedText3 = LanguageApp.translate(
      russianText, // текст
      'ru', // с какого языка переводим
      'et' // на какой язык переводим
    );
 
    // Вставляем переведённый текст во вторую колонку
    sheet.getRange(
      cell.getRowIndex(), // номер строки
      2 // номер столбца
    ).setValue(translatedText);

    // Вставляем переведённый текст во третию колонку
    sheet.getRange(
      cell.getRowIndex(), // номер строки
      3 // номер столбца
    ).setValue(translatedText2);
    
    // Вставляем переведённый текст во четвёртую колонку
    sheet.getRange(
      cell.getRowIndex(), // номер строки
      4 // номер столбца
    ).setValue(translatedText3);
  }
 
}

Oma näiteks

Full kood

// Открытие сайдбара
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 id="sidebarForm" 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>';

    // Добавляем скрипты
    sidebarHTML += "<script>\
        (function() {\
            function init() {\
                document.getElementById('sidebarForm').addEventListener('submit', function(event) {\
                    event.preventDefault();\
                    var name = document.getElementById('name').value;\
                    var abrakadabra = document.getElementById('abrakadabra').value;\
                    var strNum = document.getElementById('strNum').value;\
\
                    google.script.run.withSuccessHandler(function(msg) {\
                        alert(msg);\
                    }).writeStrInTable({ name: name, abrakadabra: abrakadabra, strNum: strNum });\
                });\
\
                document.getElementById('sidebarClose').addEventListener('click', function() {\
                    google.script.host.close();\
                });\
\
                greetUser();\
            }\
\
            function greetUser() {\
                alert('Добро пожаловать в сайдбар!');\
            }\
\
            window.addEventListener('load', init);\
        })();\
    </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, 10);

    // Проверяем корректность номера строки
    if (isNaN(strNum) || strNum < 1) {
        return "Ошибка: Неверный номер строки.";
    }

    // Получаем объект с активной таблицей
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getActiveSheet();

    // Записываем данные в таблицу
    sheet.getRange("E" + strNum).setValue(name);
    sheet.getRange("F" + strNum).setValue(abrakadabra);

    return "Данные успешно записаны в строку " + strNum + "!";
  • функция showSidebar открывает сайдбар которая собирает данные от пользователя.
  • Функция writeStrInTable(e): эта функция вызывается при отправке формы.

  • Скрипт который приветствует тех кто зашёл в опросник и показывает в какую строку вы записали данные
    sidebarHTML += "<script>\
        (function() {\
            function init() {\
                document.getElementById('sidebarForm').addEventListener('submit', function(event) {\
                    event.preventDefault();\
                    var name = document.getElementById('name').value;\
                    var abrakadabra = document.getElementById('abrakadabra').value;\
                    var strNum = document.getElementById('strNum').value;\
\
                    google.script.run.withSuccessHandler(function(msg) {\
                        alert(msg);\
                    }).writeStrInTable({ name: name, abrakadabra: abrakadabra, strNum: strNum });\
                });\
\
                document.getElementById('sidebarClose').addEventListener('click', function() {\
                    google.script.host.close();\
                });\
\
                greetUser();\
            }\
\
            function greetUser() {\
                alert('Добро пожаловать в сайдбар!');\
            }\
\
            window.addEventListener('load', init);\
        })();\
    </script>";
  • Функция приветсвует пользователя
  • Данные записываються в столбик E и F, так же можно переписать данные в заполненых строчках
  • Функция пишет записались ли данные и в какую строку

Так же есть функция не даст записать не номер строки, а буквы или оставить строку не заполненым. Будет высвечивать ошибку