Истории о Google Spreadsheets — Манжеты Гейм-дизайнера
1-s2OcAZYLdc0KCdwu_55lwA

Истории о Google Spreadsheets

Предисловие

Каждый геймдизайнер так или иначе сталкивается в работе с использованием таблиц, а если не сталкивается — пусть отложит свой блокнот, в котором считает баланс и пишет диздоки и столкнется уже, наконец, с таблицами.

Я начну писать о том, как можно быстро и удобно пользоваться гугл таблицами для всего, что можно себе только представить в геймдизайне. Вряд ли это будет разбор того, как использовать те или иные функции в подсчёте баланса, но разбор самых удобных и тех, которые лично я использую чаще всего (с примерами) — точно.

Первый мой пост не самый легкий, но с чего решил, с того решил.

PS: Писать все примеры я буду на русском языке, так как подавляющее большинство всё-таки сидит на русских таблицах от Google.


Что такое диапазоны данных?

1

Диапазоны данных — это выпадающее меню в выбранной ячейке таблиц со списком заданных параметров.

Диапазоны данных очень удобная вещь. Нужны они, минимум, для того, чтобы не вводить данные вручную, и чтобы все данные были в одном виде. А дальше уж, как их использовать, ограничивается только фантазией.

Кто не знает, то диапазоны данных можно задавать следующим образом:

  • Правый клик по ячейке.
  • Выбрать «Проверка данных»
  • Правила: «Значения из диапазона» или «Значения из списка»

Если у кого-то всё на английском — обратитесь к справке Google :)

Именованные диапазоны

Также в Google таблицах есть возможность именовать диапазоны. То есть, если вы раньше вводили в проверку данных диапазон вида A:A, то теперь, можно просто ввести «Диапазон1», и он будет знать, что это такое.

Именованные диапазоны можно также использовать в различных формулах, что тоже очень удобно.

Чтобы создать именованный диапазон:

  • «Данные» → «Именованные диапазоны»
  • «Добавить диапазон»
  • Вводим название диапазона и выбираем сам диапазон
  • Используем имя диапазона в проверке данных вместо «A:A»
  • Профит!
2

Динамические диапазоны данных

Подошли к самому интересному

Теперь, благодаря диапазонам, мы можем сделать целую выборку данных, которые будут зависеть друг от друга.

К примеру: Выбрать «Правая рука», чтобы в следующей строке появились предметы, доступные только под правую руку. Выбрать «Голова», чтобы в следующей строке появились предметы, доступные на голову и так далее.

Подготовка материала

Создаем вот такой список диапазонов:

1*JOsxRmPX8M1TUk0xUZEWhA

 Далее, создаем именованные диапазоны для наших списков.
4
 
Далее — создаем ячейки с именованным диапазоном главной группы, то есть «ОСНОВНАЯ»
5

Вторую колонку оставляете пустой.

Переходим к написанию логики. Для этого нам потребуется Google script. Доступен он во вкладке «Инструменты» — «Редактор скриптов»

6

Называть его можно как угодно. Вставляем туда следующий код:

function depDrop_(range, sourceRange){
var rule = SpreadsheetApp.newDataValidation().requireValueInRange(sourceRange, true).build();
range.setDataValidation(rule);
}
function onEdit (){
var aCell = SpreadsheetApp.getActiveSheet().getActiveCell();
var aColumn = aCell.getColumn();
if (aColumn == 1 && SpreadsheetApp.getActiveSheet()){
var range = SpreadsheetApp.getActiveSheet().getRange(aCell.getRow(), aColumn + 1);
var sourceRange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(aCell.getValue());
depDrop_(range, sourceRange);
}
}

Должен получиться следующий вид:

7

Сохраняем, жмем на «Выполнить» (кнопка, похожая на кнопку Play кассетных плееров) Код попросит разрешение, выдаем его и идём в наш документ с диапазонами.

Теперь, при выборе в основной группе, справа в колонке +1 будет появляться подгруппа с диапазоном данных (видео — для понимания)

Все, конечно, хорошо, удобно и работает, но! При удалении данных из столбца А, данные остаются в В. Что не круто.

Для того, чтобы данные из В очищались, нужно добавить в код следующий кусок скрипта:

if (aColumn == 1 && aCell.getValue() == “”) {
var range = SpreadsheetApp.getActiveSheet().getRange(aCell.getRow(), aColumn + 1);
range.clearDataValidations();
range.clearContent();
return;
}

Получится общий вид вот такой:

8

Попробовать можно тут: https://docs.google.com/spreadsheets/d/1qFkhYbdoENslk7Vn0gLI8vn7JIqNpD0kkMHSpPuAOwI/edit#gid=0

Делайте копию — код и всё остальное будет работать.

Послесловие

В принципе, после таких манипуляций можно сделать очень гибкую систему для постройки различных калькуляторов.

Можно пойти дальше и добавить ещё несколько колонок с данными. Формулы, автозаполнение и так далее.

Google Docs и без GS очень гибкий и мощный инструментарий, а с GS так вообще можно неимоверные вещи творить.

Гостевой пост
Автор текста: Сергей Судиловский.

Мы не всегда согласны с гостевыми авторами, но посчитали материал интересным. Присылайте нам свои тексты, может и вас опубликуем :)
  • Gleb Igorevich

    Весьма полезный материал.Спасибо!

  • Николай Шаповалов

    Мансарды геймдизайнера порадовали)

  • Albert Alexandrovskiu

    Спасибо! Как же приходилось изгаляться с формулами, когда нужны были скрипты…

  • Код без комментариев, трудно ориентироваться, думал взять и пользоваться, столкнулся с багом. Есть некоторые доработки, в оригинальных скриптах — http://stackoverflow.com/questions/33926445/creating-a-dynamic-dropdown-list-in-a-google-form-using-javascript