[Из песочницы] Визуализации в Google Spreadsheets

С момента появления Excel стал самым популярным и универсальным инструментом автоматизации расчетов для непрограммистов и полупрограммистов (таких, как я). В свое время я много всякого писал на VBA, делал в студенчестве скрипты для оформления курсовых, даже запилил для диссертации мощный итерационный расчет распространения тепла в твердом топливе во время горения, который минут на 20 парализовывал комп. Сегодня в эпоху облаков и веб-решений эту нишу захватывают Google Sheets.

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

aq-equpt7vacygpbxtrlgmbl7ve.jpeg
Работаю я в сфере управления и планирования строительством, а на стройке что-то сложнее икселя приживается очень плохо. Поэтому у гугл таблиц есть все шансы завоевать сердца (а может даже умы) строителей. Некоторые приемы, уже ставшие стандартом работы в электронных таблицах, гугл перенимает у предшественников, поэтому на первый взгляд разница с искселем незначительна. При этом некоторые возможности реализуются в новом виде и одной из таких удачных на мой взгляд реализаций стали формулы массива. Они были и в икселе, но посмотрев на них, хотелось сказать «слава богу, что я не знаю где они мне могут понадобиться». В гугле же с ними прямо приятно работать и, думаю, они еще проявят свою полезность во многих задачах. Я же покажу, как их можно применять для работы со строительными визуализациями.

Демонстрировать все это в видеоформате проще, поэтому сделал небольшой эксплейнер:


А вот код скрипта, который позволяет увязать визуализацию с разными обозначениями со справочником параметров:

/**
 * Подставляет вместо закодированных значений соответствующие значения из справочника
 * @param {"A5:D20"} arr массив исходных закодированных значений
 * @param {"A21:D25"} sprav справочник (массив)
 * @param {"цена"} param искомый в справочнике параметр
 * @customfunction
 */
function ВИСП(arr, sprav, param) {
  if(typeof sprav=="object"&&sprav.length!=undefined) {
    if(typeof arr=="object"&&arr.length!=undefined) {
      for (var i = 0; i


Возможно оптимизация кода не на высоте, я все таки не PROграммист, но он работает.

Конечно, те кто в теме, скажут что это все фигня, давно уже есть BIM. Да, есть. Но мы быстрей прикрутим таблицы к модели в SketchUp (тоже гугл, чтоб его), чем внедрим BIM. Потому что пока в BIM не работают все от производителей стройматериалов и проектировщиков до строителей и эксплуатации, от него больше трудозатрат, чем пользы. А в нашей стране это произойдет не скоро.

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

© Habrahabr.ru