Перейти к содержимому
Главная страница » Google Apps Scripts примеры

Google Apps Scripts примеры

Первый пример — переводчик

При написании одного или нескольких слов, они автоматически переводятся на определенные языки.

*Оригинальный код*
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 "Данные записаны!";
}

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

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