В этом посте о скриптах приложений мы рассмотрим, как настраиваются переменные и как они могут хранить различную информацию. Мы также рассмотрим чтение и запись данных из электронной таблицы, что является одной из наиболее распространенных задач при работе с ней.
Я собираюсь использовать простой пример, где у нас есть данные о трех разных учениках, и мы хотим объединить все эти данные в одну таблицу в другой части листа. Затем мы собираемся немного отформатировать его, чтобы он выглядел лучше.
Итак, мы будем получать данные из этих столбцов:
И записывать это в эти столбцы, все с помощью Apps Script.
Итак, прежде всего, что такое переменная? По сути, это контейнер, в котором хранится информация. Вы даете ему имя и указываете, что находится в контейнере. Для этого есть три ключевых слова: var, let и const. Как правило, используйте const, так как это поможет предотвратить ошибки, если только значение переменной не изменится, и тогда вам следует использовать let. var вы увидите в старых примерах кода в Интернете.
Все переменные начинаются с ключевого слова, за которым следует имя этой переменной. Вы можете называть свою переменную как угодно, кроме использования ключевых слов, таких как function, или начинать ее с символа, который не является буквой, например с цифры. Переменные обычно пишутся верблюжьим регистром. Вы заметите, что ключевые слова в редакторе сценариев отображаются синим цветом.
Выше у нас есть два примера переменных. Первая — это переменная с именем studentsName, и мы присвоили этой переменной имя Paul. Таким образом, каждый раз, когда мы ссылаемся на studentsName, мы имеем в виду имя Пол. То же самое касается чисел. Вторая переменная называется numberOfStudents, и мы указали, что количество студентов равно 4.
Обратите внимание, что текст (или «строка») заключен в кавычки. Обратите внимание, что можно использовать одинарные или двойные кавычки. Числа не нуждаются в кавычках, если они используются как числа. Мы используем знак равенства, чтобы показать, что текст или число были назначены этой переменной. Другими словами, это то, что было помещено в конкретный контейнер. Знак равенства не означает равно, как в математике. Для этого используется двойной (==) или тройной (===) знак равенства.
Код
Создайте новую электронную таблицу и откройте редактор сценариев приложений из меню «Расширения».
1. function collateMarks() {
2. const ss = SpreadsheetApp.getActiveSpreadsheet();
3.
4. }
Строка 1: оставьте текст function по умолчанию и измените имя function с myFunction на collateMarks.
Строка 2: в фигурных скобках я создал переменную с именем ss и назначил SpreadsheetApp класс и к нему getActiveSpreadsheet() метод.
Итак, почему я это сделал? SpreadsheetApp.getActiveSpreadsheet() относится к текущей активной электронной таблице, т. е. к той, которую мы используем в данный момент. Что позволяет мне переменная, так это то, что вместо того, чтобы писать SpreadsheetApp.getActiveSpreadsheet() каждый раз, когда я хочу сослаться на нее, я могу поместить ее в переменная и с этого момента просто ссылайтесь на эту переменную. Таким образом, каждый раз, когда я буду ссылаться на ss с этого момента, я на самом деле имею в виду активную электронную таблицу.
Обычно для обозначения электронной таблицы используется переменная ss. Эти распространенные методы помогают вам читать и понимать код других людей, а им – ваш.
Далее, поскольку мы будем многократно обращаться к листу при чтении и записи данных в него и из него, давайте сохраним активный лист в переменной с именем sheet. Теперь нам нужно получить активный лист, поэтому нам нужен метод getActiveSheet(). Мы могли бы написать это длинной рукой, как это:
SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(), но поскольку у нас уже есть первая часть, сохраненная в переменной ss, мы можем просто использовать ее.
1. function collateMarks() {
2. const ss = SpreadsheetApp.getActiveSpreadsheet();
3. const sheet = ss.getActiveSheet();
4. }
Строка 3: введите const и sheet, а затем знак равенства. Затем давайте определим эту переменную. Введите ss и поставьте точку. Как мы видим ниже, он предлагает возможные методы, которые мы можем использовать с электронной таблицей.
Начните вводить метод, который нам нужен, например getActiveSheet(), и когда вы увидите его в меню, нажмите на него, чтобы добавить.
Затем завершите строку точкой с запятой.
Хорошо, теперь мы хотим начать создавать нашу таблицу на листе. В конце строки 3 нажмите несколько раз Enter, чтобы получить пару пустых строк, которые переместят фигурную скобку на несколько строк вниз.
Строка 5: введите лист и поставьте точку.
1. function collateMarks() {
2. const ss = SpreadsheetApp.getActiveSpreadsheet();
3. const sheet = ss.getActiveSheet();
4.
5. sheet.getRange("A1").setValue("Name");
Это относится к текущему активному листу. Затем нам нужно получить диапазон на этом листе.
После точки введите getRange() и в скобках добавьте ссылку на ячейку «A1». Затем введите точку, setValue() и в скобках введите «Имя». Наконец, завершите строку точкой с запятой.
Это позволит получить ячейку A1 и установить ее значение в слово Имя. Другими словами, он напишет слово Имя в ячейку A1 на нашем листе, например:
5. sheet.getRange("A1").setValue("Name");
6. sheet.getRange("B1").setValue("Subject");
7. sheet.getRange("C1").setValue("Mark");
Строки 6 и 7 аналогичны. Получаем ячейки B1 и C1 и пишем слова Subject и Mark. Он устанавливает строку заголовка следующим образом:
Теперь у нас есть строка заголовка, давайте получим данные об учениках из столбцов с F по H.
9. const student1 = sheet.getRange("F2:H2").getValues();
Строка 9: здесь я собираюсь создать еще одну переменную с именем student1. На этот раз я собираюсь получить данные в строке из 3 ячеек (от F2 до H2). Поскольку данных несколько, мы используем метод, называемый getValues(). Обратите внимание, что буква «s» в конце — распространенная ошибка, когда забывают добавить букву «s».
Это сохранит три части информации: Джон, Математика, 65 в переменной student1. Да, переменные могут хранить более одного бита информации!
9. const student1 = sheet.getRange("F2:H2").getValues();
10. const student2 = sheet.getRange("F5:H5").getValues();
11. const student3 = sheet.getRange("F8:H8").getValues();
Строки с 10 по 11: Затем мы делаем то же самое для двух других учеников. Теперь у нас есть 3 сведения о трех студентах в трех разных переменных, student1, student2 и student3. .
Теперь, когда мы прочитали данные на листе и сохранили их, нам нужно записать их на другой части листа.
13. sheet.getRange("A2:C2").setValues(student1);
Строка 13: я хочу записать данные первого учащегося в строке 2, поэтому я получаю диапазон от A2 до C2, а затем устанавливаю значения этих ячеек в соответствии с содержимым переменной student1. Итак, что произойдет, так это то, что в ячейке A2 будет написано John, в ячейке B2 Математика и в ячейке C2 65, как мы видим ниже:
13. sheet.getRange("A2:C2").setValues(student1);
14. sheet.getRange("A3:C3").setValues(student2);
15. sheet.getRange("A4:C4").setValues(student3);
Строки 14–15: мы выполняем тот же процесс для двух других учеников, на этот раз записывая данные в строки 3 и 4, используя переменные student2 и студент3. Итак, теперь у нас есть основная таблица:
Вот как получить и установить значения на листе, но давайте сделаем таблицу немного красивее, добавив форматирование.
17. const header = sheet.getRange("A1:C1");
Строка 17: Во-первых, давайте получим строку заголовка, то есть от A1 до C1. Мы используем метод getRange() и сохраняем этот диапазон в переменной заголовке. Это означает, что нам не нужно получать этот диапазон каждый раз, когда мы его используем, мы можем просто ссылаться на переменную header. Теперь у нас есть этот диапазон заголовков, который мы можем использовать, чтобы затем добавить к нему некоторое форматирование.
17. header.setBackground(“yellow”)
18. .setFontWeight(“bold”);
Строка 18: Давайте изменим цвет фона на желтый. Для этого мы получаем диапазон заголовков (header) и используем метод setBackground(). Затем мы помещаем нужный цвет в скобки с кавычками. Обратите внимание, я не добавил точку с запятой в конце. Это потому, что я собираюсь подключить к нему другой метод. Это называется цепочкой.
Строка 19: Давайте также добавим полужирный шрифт к словам. Для этого мы используем метод setFontWeight() и в скобках добавляем слово жирный в кавычках. На этот раз мы заканчиваем его точкой с запятой.
Как мы видим, это отформатировало заголовок.
Наконец, давайте выровняем все ячейки в таблице по центру.
21. const table = sheet.getRange("A1:C4");
Строка 21: Во-первых, нам нужно получить диапазон ячеек в таблице (от A1 до C4). Здесь я сохранил этот диапазон в переменной таблице.
21. const table = sheet.getRange("A1:C4");
22. table.setHorizontalAlignment(“center”);
Строка 22: Затем мы получаем этот диапазон таблицы, добавляем к нему метод setHorizontalAlignment() и в скобках указываем center в кавычках.
Итак, запускаем программу. Это будет считывать данные из одной части листа, записывать данные в другую часть и, наконец, форматировать все это за один раз. При первом запуске он попросит нас авторизовать доступ, который мы хотим.
Итак, запускаем программу. Это будет считывать данные из одной части листа, записывать данные в другую часть и, наконец, форматировать все это за один раз. При первом запуске он попросит нас авторизовать доступ, который мы хотим (не забудьте щелкнуть ссылку «Дополнительно»).
Как мы видим, мы получили информацию о 3 учениках, добавили заголовок, добавили информацию о другой части листа, добавили желтый фон и выделение жирным шрифтом к заголовку, а также центрировали все наши ячейки, и таблица выглядит намного лучше. .
Используя переменные, мы смогли написать более короткий фрагмент кода, и теперь этот код также позволяет нам создать таблицу с данными для другого набора учащихся.
Надеюсь, вы видите, как легко получить данные с листа и записать в него данные.
Когда я впервые изучал JavaScript, сайт W3schools.com показался мне чрезвычайно полезным. Он очень хорошо объясняет язык, и в каждой части есть примеры, которые вы можете попробовать. Имея в виду, что они больше ориентированы на использование JavaScript с веб-страницами, но сайт очень быстро научил меня многому.
Если вы хотите узнать больше о переменных, посетите сайт W3schools:
https://www.w3schools.com/js/js_const.asp
Вот ссылка, чтобы сделать копию электронной таблицы, которая также содержит код.
Взято из моей книги Руководство для начинающих по Google Apps Script 1 — Sheets, доступной на Amazon.