0
242
2019-02-18

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

Общее руководство по настройке скрипта в Google Sheets для множественного выбора значений в ячейках с проверкой данных. Уверен пригодится многим.
Понравилась страница? Поставь свою оценку!
PLUGIN_STAR_RATINGS.SCORE_TEXTPLUGIN_STAR_RATINGS.VOTES_TEXT

Как настроить работу множественного выбора в ячейка 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и вставьте код который указан ниже. Далее нажмите Файл> Сохранить.

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

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

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

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

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

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

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

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

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

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

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

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

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