Gamedev
Алиса Высотина
3351

Google Sheets для геймдизайнера. Часть 2: Работа с текстом

В закладки
Аудио

Предыдущие статьи цикла:

Введение и общая функциональность Google таблиц

Google Sheets для геймдизайнера. Часть 1: Сортировка данных

Для того, чтобы было нагляднее, я создала табличку на Google диске. Вы можете ее открыть, скопировать к себе на диск, пощупать все формулы и посмотреть более подробно как они сделаны. Предполагается, что вы откроете таблицу и будете смотреть на нее параллельно обращаясь к статье для упрощения процесса чтения формул.Ссылка на табличку:

Идем в File — Make a copy — выбираем папку на своем диске Google, куда вы хотите скопировать таблицу.

Страница 2: Работа с текстом

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

Содержание статьи:

  1. Подсчет букв в ячейке (LEN, SUBSTITUTE)
  2. Подсчет слов в ячейке (IF, SUBSTITUTE, ISBLANK, TRIM)
  3. Подсчет ячеек, содержащих определенное слово (COUNTIF)
  4. Подсчет количества повторения слова в группе ячеек (LEN, JOIN, SUBSTITUTE)
  5. Поиск соответствия для значения (VLOOKUP)
  6. Соединение значений ячеек в одной (JOIN)
  7. Размытый поиск по частичному совпадению (FLOOKUP, IFS, ISTEXT)

Таблица 1: Подсчет символов и слов в ячейке

Задача 1

Дано:
Таблица 1
Столбец A — Персонаж, который произносит реплику
Столбец B — Текст реплики

Вопрос:
Сколько символов без пробелов содержится в ячейке? Полученное значение записать в столбец C.

Решение:

Общий вид формулы:

LEN — это формула, которая просто подсчитывает длину строки, то есть, количество символов в ячейке.

Синтаксис у формулы следующий:

=LEN (“ягода”) - это 5
=LEN (“1 2 33”) - это 6

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

SUBSTITUTE — это формула, которая заменяет найденные совпадения в ячейке на значения, которые указаны в формуле. Она может заменить как все совпадения, так и выбранное совпадение по счету.

Синтаксис у формулы следующий:

Где:
text_to_search — ячейка, или диапазон в котором нужно искать совпадения
search_for — значение, которое нужно найти, чтобы его заменить
replace_with — текст, на который нужно заменить найденное значение
occurrence_number — порядковый номер совпадения, которое нужно заменить

На простом примере:

В нашем случае мы соединяем эти две формулы и сначала удаляем все пробелы с помощью формулы SUBSTITUTE, заменяя их на просто пустоту, а затем подсчитываем количество символов с помощью функции LEN.

=Подсчитать длину строки (Заменить (в ячейке B5, найти пробелы, заменить на ничто))

Задача 2

Дано:
Таблица 1

Вопрос:
Сколько слов в ячейке?

Решение:

Здесь мы будем использовать целое множество формул. Это связано со следующими нюансами:

  • мы не хотим, чтобы в результате формулы получалась ошибка, если ячейка пустая;
  • мы хотим, чтобы формула корректно считала слова типа «А-а-а-а», или «когда-нибудь», а именно — как одно слово;
  • мы хотим, чтобы формула при этом считала фразу «оранжевый — это цвет» — как три слова, а не как четыре.

Общий вид формулы:

Выглядит сложновато, но на самом деле все просто. Начнем с формул составляющих.

IF — это очень крутая формула, которая, используется довольно часто ввиду своей универсальности. Она очень похожа на IFS, о которой речь шла ранее, только она производит проверку не по нескольким условиям, а по одному, при этом возвращая в ячейку одно из двух значений: в случае, если ячейка отвечает условию, и в случае, если не отвечает. Под условием может быть как прямое значение, или текст, так и другая формула.

Синтаксис формулы следующий:

Где:
logical_expression — логическое выражение, то есть, наше условие;
value_if_true — если ответ на условие — «правда», то формула возвращает это значение;
value_if_false — если ответ на условие — «ложь», то формула возвращает это значение;

На простом примере:

Обратите внимание, что текст формула проверяет без учета регистра, если вам нужна чувствительная проверка — ее нужно будет дополнить.

ISBLANK — это формула, которая просто производит проверку ячейки на заполненность. При применении к ячейке она возвращает TRUE, если ячейка пустая и FALSE, если в ней есть содержимое.

Синтаксис формулы:

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

Синтаксис формулы простой:

Теперь соберем все вместе:

Сначала мы используем функцию IF, с помощью которой мы возвращаем значение 0, если ячейка пустая:

=Если (Ячейка пустая (B5), если правда пустая пишем 0, …)

Если ячейка не пустая, то мы применяем к ней нашу формулу подсчета слов в ячейке.

Сначала мы считаем общее количество символов без лишних пробелов. Так, в примере видно, что лишние пробелы есть в начале второй и четвертой строчек текста. Если мы просто посчитаем длину строки LEN, то получим значение 177 (ячейка C2), но с формулой выше мы сначала обрезаем все лишние пробелы с помощью TRIM, и только потом уже считаем итоговую длину строки и получаем результат 173 символа.

Что выделяет слово в тексте и делает возможным осуществление подсчета? Правильно, пробелы, которыми оно отделяется от остальных слов. Именно поэтому «когда-нибудь» — это одно слово, а «когда ты» — два. Таким образом, подсчитав количество пробелов, мы сможем узнать количество слов. Для этого мы по известной нам формуле вычисляем длину строки без пробелов, она составляет 144 символа. Вычитаем это значение из предыдущего и получаем 173-144=29 слов. Тем не менее, после последнего слова текста и перед первым словом пробелы не ставятся, поэтому в любом тексте пробелов всегда меньше на один, чем слов. Например, «Стареем неизбежно мы» — два пробела, три слова. Поэтому мы прибавляем к получившемуся значению единицу. Получаем количество слов — 30 (ячейка B2).

Тем не менее, количество слов по-прежнему неверное, ведь наша формула считает « — » за слово, а это знак препинания. Получается, мы должны подсчитать количество тире в тексте и вычесть его из общего числа. Для этого, мы пользуемся такой же формулой, как и для подсчета пробелов: из общего числа символов мы вычитаем количество тире в тексте. Обратите внимание, что мы ищем именно сочетание символов «- », так как если мы добавим в формулу SUBSTITUTE тире без пробела, то она посчитает его и в слове «по-прежнему», а нам это не нужно. Таким образом, из общего количества символов LEN (A2) мы вычитаем количество символов без тире и получаем 177-175=2 символа. Полученное значение делим на два, так как в вычете участвовало два символа — и тире, и пробел.

Задача 3

Дано:
Таблица 1

Вопрос:
Сколько ячеек содержат слово «Cheese»?

Решение:

Вспомогательная таблица 1.1 — Подсчет отдельных ячеек и значений

Общий вид формулы:

Тут мы используем нашу знакомую формулу COUNTIF, которая прекрасно справляется не только с поиском числовых значений, но и с поиском текста в ячейке. Проблема в том, что если ячейка содержит другой текст, кроме искомого «Cheese», то результат формулы будет 0. Поэтому, до и после искомого слова мы добавляем знак * , который в синтаксисе означает «любые другие символы».

Задача 4

Дано:
Таблица 1

Вопрос:
Сколько раз в ячейках таблицы повторяется слово «call»?

Решение

Вспомогательная таблица 1.1 — Подсчет отдельных ячеек и значений

Общий вид формулы:

Из нового тут только формула JOIN.

JOIN — это формула, которая объединяет значения нескольких ячеек в одну, вставляя между ними значение или символ, указанные в формуле как разделитель.

Синтаксис формулы такой:

Где:
delimiter — разделитель, который будет вставлен между объединяемыми ячейками;
value_or_array1 — диапазон ячеек, которые нужно объединить;
[value_or_array2, ...] — дополнительные диапазоны через запятую.

На простом примере:

Теперь давайте разберем нашу формулу по подсчету слов.

Первым делом, поскольку нам надо искать в тексте, который содержится в разных ячейках, мы объединим весь этот текст в одно целое с помощью функции JOIN. Разделителем поставим пробел, на случай, если искомое слово вдруг стоит в конце предложения без точки.

Теперь, по уже знакомому нам принципу в тексте, объединенном через такой же JOIN, как и в первой части формулы, мы найдем с помощью SUBSTITUTE слово «вас» и заменим его на пустоту «». После этого, подсчитаем получившееся количество символов функцией LEN. Полученное значение мы вычтем из общего числа символов и получим 265-241=24 символа. Проще говоря, мы узнали, что между текстом, содержащим слово «вас» и не содержащим его, разница в 24 символа.

Теперь, когда мы знаем длину символов, составляющих сумму слов «вас» в тексте, там остается с помощью формулы LEN высчитать длину этого слова и разделить на получившееся число общее число лишних символов. Получается, 24/3=8 слов. Всего, выходит, 8 слов «вас» в тексте ячеек.

Задача 5

Дано:
Таблица 2

Столбец G — условие квеста;
Столбец H — название предмета, требующегося по квесту;
Столбец I — айдишник предмета.

Вопрос:
Как узнать id предмета по названию?

Решение

Вспомогательная таблица 2.1 — Таблица соответствий

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

Общий вид формулы:

VLOOKUP — это формула, которая осуществляет горизонтальный поиск по указанному диапазону соответствий к указанной ячейке, находит такое соответствие и возвращает искомое значение из указанного столбца.

Синтаксис формулы:

Где:
search_key — та ячейка, для которой мы будем искать соответствие;
range — диапазон, в котором мы будем искать соответствие. Он может быть любым количеству столбцов, но соответствия для искомой ячейки должно быть в первом столбце диапазона.То есть, если вы указываете диапазон со столбца B по столбец D, соответствия, среди которых должен быть search_key могут быть только в столбце B.
index — столбец из которого будем возвращать соответствие.
[is_sorted] — если вы укажете false, то формула будет искать точное совпадение search_key с первым столбцом диапазона range. Это единственный вариант работы с текстом. Если вы укажете true, или вообще ничего не укажете (а это true по умолчанию), то формула будет возвращать значение, приблизительно соответствующее искомому. При этом, первый столбец диапазона range должен быть отсортирован по возрастанию, иначе формула будет работать неправильно.

На простом примере:

Формула находит точное соответствие названия товара в столбце D и возвращает значение ячейки соответствия.

Теперь посмотрим, как это работаем с числами и отсортированным столбцом.

Все то же самое, только мы ищем как оценить работу сотрудника на основе количества выданных в месяц кредитов. Так как число неравное, формула будет искать в списке соответствий число не меньше, чем указано, но и не больше, чем следующее число. То есть, все, кто выдал менее 30 кредитов будут уволены, менее 50, но более 30, будут считаться лентяями. И так далее.

Задача 6

Дано:
Таблица 3

Вопрос:
Как соединить текст из разных строчек в одной ячейке?

Решение:

Используем нашу знакомую формулу JOIN.

В качестве параметра delimiter мы указываем две кавычки и пробел между ними. Кавычки означают, что значение внутри текстовое.

Задача 7

Дано:
Таблица 4

Вопрос:
Как создать автоматический переводчик коротких текстов условий квестов на английский язык?

Решение:

К сожалению, это одна из немногих функций Excel, которых нет в Google Sheets. Но тут нам приходит на помощь функция Add-ons, которой в Excel нет.

Идем в Add-ons — Get add-ons. В открывшемся окне через поиск находим расширение Flookup и добавляем его в Google Sheets для своего аккаунта.

FLOOKUP, или Fuzzy Lookup — это формула, которая позволяет вам искать текстовые соответствия с неполным совпадением ячеек.

Сайт разработчика:
https://www.getflookup.com/

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

1) Предметы и здания в условиях квеста склоняются по падежам. Некоторые меняют свое окончание, некоторые нет. У некоторых может быть несколько вариантов окончаний в зависимости от контекста.
2) Предметы и здания в условиях квеста могут состоять как из одного, так и из двух, или трех слов, каждое из которых может менять окончание, а может не менять.

Подобные вещи усложняют составление таблицы соответствий для той же VLOOKUP. Поэтому, давайте познакомимся с палочкой-выручалочкой, формулой Fuzzy Lookup.

Вспомогательная Таблица 4.1 — Таблица соответствий

В нашем случае есть неизменное условие квеста (продай, собери и проч.) и меняющие свои окончания предметы (Драконье стекло, Драконьего стекла, и так далее). Соответственно, чтобы сделать все более универсальным, нужно разбить условия на части, иначе придется для каждого предмета в таблице соответствий писать все варианты сочетаний, вроде «собери веточку», «продай веточку», «укради веточку» (а в таком случае, можно обойтись обычной VLOOKUP).

Итак, формула:

Сначала разберем все, что идет перед FLOOKUP.

Ячейка в условии может быть
а) пустой
б) числовой
в) текстовой

Чтобы не было лишних ошибок, через уже знакомую формулу IFS исключим первые два случая.

Возвращает пустоту, если ячейка изначально была пустой.

Возвращает (копирует) число в точности, если в исходной ячейке было число.

Текстовыми значениями занимается FLOOKUP.

Синтаксис формулы:

Где:
lookupValue — та ячейка, для которой мы будем искать соответствие (как и в VLOOKUP);
tableArray — диапазон, в котором мы будем искать соответствие (как и в VLOOKUP);
lookupCol — столбец, в котором мы ищем соответствие (в VLOOKUP это всегда первый столбец по умолчанию, а здесь он указывается);
indexNum — столбец, из которого мы будем возвращать соответствие;
threshold — минимальный процент соответствия содержимого ячеек, в котором поиск будет удачным. Значения от 0 (полное несоответствие) до 1 (полное соответствие);
rank — в случае, если находится несколько соответствий, то порядковый номер соответствия, которое надо вернуть (по умолчанию 1).

На простом примере это:

Формула проходится по значениям и проверяет их на соответствие.

Вот и получается, что 40% и более соответствия со словом «клубника» имеют:
КЛУБНИКА
КЛУБНИчКА
КЛУБНИчечКА

На клубнику не похожи, но 40% и более соответствия со словом «клубеша» имеют:
КЛУБЕнь
КЛУБЕШник

Совсем ни на что не похоже:
КЛУБусик

Процент соответствия, возможно, придется подбирать вручную, но это вполне реально.

Далее соединяем столбцы N и O с помощью уже известной формулы JOIN и разделителя в виде пробела.

Простые формулы, которые мы рассмотрели в этой статье, позволят вам делать большое разнообразие различных операций с текстом в Google Sheets, не перенося работу в другие сервисы и программы.

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

Больше статей можно найти в моем блоге Вконтакте:

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Алиса Высотина", "author_type": "self", "tags": [], "comments": 34, "likes": 98, "favorites": 501, "is_advertisement": false, "subsite_label": "gamedev", "id": 95068, "is_wide": false, "is_ugc": true, "date": "Mon, 20 Jan 2020 19:33:10 +0300", "is_special": false }
0
{ "id": 95068, "author_id": 138586, "diff_limit": 1000, "urls": {"diff":"\/comments\/95068\/get","add":"\/comments\/95068\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/95068"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64954, "last_count_and_date": null }
34 комментария
Популярные
По порядку
Написать комментарий...
0

А в чем прикол держать все наработки в удобном сервисе, который может все удалить или в "вдруг" особенно в последних реалиях к ним может отвалиться доступ?

Что мешает за 10 минут развернуть какой нибудь бесплатный комьюнити сервер onlyoffice и работать небольшой командой имея чат, общие документы. проекты, почту, календарь и прочее, но не боясь потерять эти данные?

Ответить
11

Не знаю каковы на ваш взгляд предпосылки к тому, что к сервисам Google (которыми является не только Диск, но и тысячи других) вдруг будет закрыт доступ, я много лет пользуюсь Google Диском и никогда не испытывала с ним никаких проблем. Я не знакома с Only Office, но что-то мне с трудом верится, что по функциональности он не уступает Google таблицам. Но даже если это и не так, не понимаю, зачем изобретать велосипед там, где уже все давно изобрели за вас. Если вы переживаете за потерю данных (которая со мной за 10 лет не случалась никогда), установите Google диск на компьютер и храните бэкап документов в оффлайн режиме.

 
Оценка мобильного приложения в сторе у Only Office, кстати, не впечатляет. И сомневаюсь, что он настолько распространен, чтобы быть интегрированным в другие рабочие сервисы, как продукты Google.

Ответить
–8

А я просто заявлю что все, кто использует Google Docs для ведения документации проекта, будут гореть в геенне огненной. Их тела будут будут распилены на тысячу кусочков, и столько же лет они будут по всему аду собирать их, а в последствии окажется что одних только пальцев там 64, 48 из них устаревшие и 10 в драфте.

Спасибо.

Ответить
1

Остается вам только посочувствовать, Сергей.

Ответить
0

Что с тобой не так? Отчего такая ненависть к тем кто пользуется различными удобными для них сервисами? Разве не может выбрать человек инструмент под себя?

Ответить
0

А по существу аргументы есть? Без религиозного фанатизма?)

Ответить
0

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

Без сомнения можно нанять людей, которые будут из буханки делать трамвай, делать из офиса что-то иное, но зачем, если полно иных вариантов?

Ответить
3

Кстати Excel Тьюринг-полный, так что на нем можно сразу и игру написать!

Ответить
0

Ну, тип, да, можно. https://www.exceltrick.com/interesting/excel-games-free-download/

p.s. ссылка не та, сейчас, тут просто встраивают флеш, похоже.

https://www.youtube.com/watch?v=6jyOJsJlLhI

Ответить
1

Таки этим можно пользоваться на Винде в офлайн-режиме?

Ответить
4

Google диском? Да, можно.

Ответить
1

С любым диском можно настроить синхнонизацию с локальным хранилищем. Это и у Яндекс.Диска есть, и у облака Mail.ru, и у OneDrive

Ответить
2

Спасибо огромное xD Очень интересно подаёте материал и поэтому очень интересно читать. Очень рад, что пока не был вынужден прибегать ко всему этому. НО если настанет и мой черёд — благодаря вам, я буду вооружён!

Ответить
0

Спасибо большое! Я очень рада :)

Ответить
0

А вот вопрос, такой, все эти эксель шаманства конечно штука прикольная, но есть может софтина какая, с удобной навигацией и графом свзязей между диалогами и вариантами ответов. Знаю что, что то точно есть, видел платные какие то, но ничего не щупал. Может кто отзывы какие напишут по платным/бесплатным штукам таким. 

Ответить
3

Дофига таких выбирай какой хочешь:

-Arcweave
-Dialogue Designer
-Articy:draft
-Chat Mapper
-Twine (оупенсорс)
-TalkTree

Вместо ворда:
-Scrivener

Ответить
0

Спасибо, очень нужная подборка. А сам или может кто еще пользовал что то? Отзыв какая лучше, хуже можешь оставить?

Ответить
1

Я пробовала Articy:draft. Есть мелкие минусы, но она очень даже неплохая. Причем я ее не только для диалогов использовала, но и для визуализации дерева крафта. Она платная, но с сайта можно скачать триал со всеми функциями, кроме сохранения проекта, и покрутить. Там, наверное, даже можно будет скачать тестовые проекты, которые собрали разработчики и посмотреть полные возможности программы.

Ответить
0

А в чем она выгружает потом такое дерево? Как это в игру интегрировать?

И еще такой вопрос, а пример твоих игр есть? Заинтриговала))

Ответить
0

У Articy есть свой API, так что можно подключить к своему проекту импорт. Плюс интеграция с Unity, UE, есть еще выгрузка в формате json и xml.

Я тружусь в казуальном поле, сейчас над проектом Charm Farm для мобильных устройств, компания Nevosoft.

Ответить
1

Интересный способ посчитать количество слов через пробелы. Спасибо за статью, узнал несколько новых моментов.

Ответить
0

Рада стараться! Я этот способ использую для подсчета слов в текстах, которые мы отправляем на локализацию. До этого коллеги прогоняли все ячейки через text ru, подсчет прямо в Google документации оказался проще. Только если в ячейке есть текст абзацами он считает не совсем корректно, т.к. из-за абзацев больше пробелов. Можете попробовать, поймете в чем дело. Но это тоже решаемо, думаю.

Ответить
0

О, курс программирования в электронных таблицах, каеф.

Раз уж вас тут можно поданимать. Есть ли смысл заводить вордовский файлик, хранящий в себе несколько других вордовских файликов. Например, для лоры?

Тип, в основном документе просто анонсирующие записи, а в открытом виде куча всего, листа на три.

Ответить
2

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

(КИТ сценарист — непотребство!)
UPD:
Однако должен сказать: в команде работать с ним, скорее всего, будет не просто. Я держу документацию для себя одного, поэтому он мне полностью подходит.

Ответить
0

Пробовал, но мне как то не понравилось. Уже не помню даже чем. Может попробую, но объём инфы у меня порой порядочный выходит.

Ответить
1

Не проще ли в таком случае воспользоваться любым удобным wiki сервисом?

Ответить
0

Воспользоваться вики-сервисом для ведения таблиц с расчетом баланса?

Ответить
0

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

Ответить
0

А, я прошу прощения, не заметила, в какой ветке вы пишите. 

Ответить
0

Корпоративную вики думал сделать или использовать, но чёт хз.

Ответить
0

Имеет смысл структурировать документацию так, как вам удобно для конкретно вашего проекта. Ключевое слово - структурировать, превратить проект в систему, разлрженную по полочкам. Просто задайте себе вопрос: зачем вам такой общий файл, какую информацию вы хотите от него получить? Название, принадлежность к главе, автора, дату актуализации, ссылку, краткое описание, добавлено/не добавлено в игру. Главное, чтобы вам это упрощало навигацию и понимание структуры проекта.

Но вообще я советую как можно быстрее отказаться от вредной привычки писать что-то в семействе MS Office и переходить на Google документы. Они удобнее и надежнее по целому ряду причин.

Ответить
0

Сводные таблицы используете в своей работе?

Ответить
0

Мне пока не доводилось с ними работать, как-то не было особой необходимости при расчете баланса. А что, есть какой-то вопрос?

Ответить
0

У меня большой объём данных(различные характеристики, а их 16 штук), которые я хотел бы распределить по типам. Самый удобный вариант это использовать sort и filter, но я бы хотел использовать дополнительные формулы(цена/вес, к примеру). Вот думаю: сводные таблицы способны удобно это сделать?

Ответить

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovz", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "chvjx", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } }, { "id": 20, "label": "Кнопка в сайдбаре", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "chfbl", "p2": "gnwc" } } } ] { "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwcm9qZWN0SWQiOiI1ZTRmZjUyNjYyOGE2Yzc4NDQxNWY0ZGMiLCJpYXQiOjE1ODI1MzY0Nzd9.BFsYFBgalfu_3oH9Fj-oBhiEgVx976VQfprRahAELFQ", "release": "44bde710" }
{ "jsPath": "/static/build/dtf.ru/specials/DeliveryCheats/js/all.min.js?v=05.02.2020", "cssPath": "/static/build/dtf.ru/specials/DeliveryCheats/styles/all.min.css?v=05.02.2020", "fontsPath": "https://fonts.googleapis.com/css?family=Roboto+Mono:400,700,700i&subset=cyrillic" }