«
»
GoogleGoogle DocsWEB

Скрипт Google Sheets для разрешения множественного выбора в ячейках с проверкой данных

Как настроить работу множественного выбора в ячейка Google Docs

Добавляем скрипт

  1. В своем Google Листе настройте проверку данных для ячейки (или ячеек), используя данные из диапазона. При проверке ячейки не выбирайте «Отклонить ввод».

  2. Перейдите в Инструменты > Редактор скриптов …

  3. В редакторе сценариев выберите «Файл»> «Создать»> «Файл сценария».

  4. Назовите файл multi-select.gsи вставьте содержимое ниже. далее нажмите Файл> Сохранить.

    function onOpen(e) { SpreadsheetApp.getUi() .createMenu('Scripts') .addItem('Multi-select for this cell...', 'showDialog') .addToUi(); } function showDialog() { var html = HtmlService.createTemplateFromFile('dialog').evaluate(); SpreadsheetApp.getUi() .showSidebar(html); } var valid = function(){ try{ return SpreadsheetApp.getActiveRange().getDataValidation().getCriteriaValues()[0].getValues(); }catch(e){ return null } } function fillCell(e){ var s = []; for(var i in e){ if(i.substr(0, 2) == 'ch') s.push(e[i]); } if(s.length) SpreadsheetApp.getActiveRange().setValue(s.join(', ')); }

    Добавляем HTML

  5. В редакторе сценариев выберите «Файл»> «Создать»> «HTML-файл».

  6. Назовите файл dialog.htmlи вставьте код который указан ниже. Далее нажмите Файл> Сохранить.

<span class="hljs-tag"><<span class="hljs-name">div</span> <span class="hljs-attr">style</span>=<span class="hljs-string">"font-family: sans-serif;"</span>></span> <span class="php"><span class="hljs-meta"><?</span> <span class="hljs-keyword">var</span> data = valid(); <span class="hljs-meta">?></span></span> <span class="hljs-tag"><<span class="hljs-name">form</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"form"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"form"</span>></span> <span class="php"><span class="hljs-meta"><?</span> <span class="hljs-keyword">if</span>(Object.prototype.toString.call(data) === <span class="hljs-string">'[object Array]'</span>) { <span class="hljs-meta">?></span></span> <span class="php"><span class="hljs-meta"><?</span> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">var</span> i = <span class="hljs-number">0</span>; i < data.length; i++) { <span class="hljs-meta">?></span></span> <span class="php"><span class="hljs-meta"><?</span> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">var</span> j = <span class="hljs-number">0</span>; j < data[i].length; j++) { <span class="hljs-meta">?></span></span> <span class="hljs-tag"><<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"checkbox"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"ch<?= '' + i + j ?>"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"ch<?= '' + i + j ?>"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"<?= data[i][j] ?>"</span>></span><span class="php"><span class="hljs-meta"><?</span>= data[i][j] <span class="hljs-meta">?></span></span><span class="hljs-tag"><<span class="hljs-name">br</span>></span> <span class="php"><span class="hljs-meta"><?</span> } <span class="hljs-meta">?></span></span> <span class="php"><span class="hljs-meta"><?</span> } <span class="hljs-meta">?></span></span> <span class="php"><span class="hljs-meta"><?</span> } <span class="hljs-keyword">else</span> { <span class="hljs-meta">?></span></span> <span class="hljs-tag"><<span class="hljs-name">p</span>></span>This cell has no <span class="hljs-tag"><<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"https://support.google.com/drive/answer/139705?hl=en"</span>></span>Data validation<span class="hljs-tag"></<span class="hljs-name">a</span>></span>.<span class="hljs-tag"></<span class="hljs-name">p</span>></span> <span class="php"><span class="hljs-meta"><?</span> } <span class="hljs-meta">?></span></span> <span class="hljs-tag"><<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"Select"</span> <span class="hljs-attr">onclick</span>=<span class="hljs-string">"google.script.run.fillCell(this.parentNode)"</span> /></span> <span class="hljs-tag"><<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"Refresh validation"</span> <span class="hljs-attr">onclick</span>=<span class="hljs-string">"google.script.run.showDialog()"</span> /></span> <span class="hljs-tag"></<span class="hljs-name">form</span>></span> <span class="hljs-tag"></<span class="hljs-name">div</span>></span>

Используем решение в своих таблицах

  1. Вернувшись в свою электронную таблицу, у вас должно появиться новое меню «Scripts». Обновите страницу, если это необходимо.

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

  3. Перейдите в Scripts > Multi-select for this cell… для этой ячейки … У Вас должна появится боковая панель, показывая контрольный список допустимых значений.

  4. Отметьте нужные элементы и нажмите кнопку «Select», чтобы заполнить ячейку выделенными элементами, разделенными запятой.

Внешний вид работы скрипта на стороне Google Docs документа

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

Видео инструкция от разработчика скрипта Александра Иванова

Саш, огромное тебе спасибо за твой труд и за создание оригинального сценария.

Полезные ссылки

Страница на которой есть скрипт и html

https://gist.github.com/arthurattwell/aa5afc178624bdd6f46c2d0d28d06136

Связанные записи
WEBПолезные сайты

9 способов определить шрифты из изображений и веб-текста и как загрузить шрифты на свой сайт

Contact Form 7WEBWEB - PHPWordPressВсе для functions.phpПлагины

Как заставить Wordpress отправлять почту из Amazon EC2 с помощью SES

Chrome AppsGoogleGoogle ChromeWEBWordPressПолезные сайты

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

LinuxWEBWEB - PHPWordPressВсе для разработки плагиновВсе для разработки шаблонов

Определите минимальную версию PHP для вашего кода?