Использование раскрывающегося списка Google Sheets для изменения цвета фона ячейки, а не текста - PullRequest
1 голос
/ 15 октября 2019

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

Таким образом, есть ли способ (с помощью Google Apps Script можно использовать), чтобы раскрывающийся список читал 5 цветов (желтый, красный, фиолетовый и т. Д.), И при их выборе текст в ячейке остается неизменныма цвет фона меняется на то, что они выбрали? Пользовательский текст может быть любым, поэтому я не могу использовать условное форматирование для этого. Спасибо!

1 Ответ

2 голосов
/ 15 октября 2019

Изменение цвета фона текущей ячейки с раскрывающимся списком на боковой панели.

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

Code.gs:

function bgcolorSelectionForActiveCell(color) {
  SpreadsheetApp.getActiveRange().setBackground(color);
}

function getSelectOptions() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Options');
  var rg=sh.getDataRange();
  var vA=rg.getValues();
  var options=[];
  for(var i=0;i<vA.length;i++)
  {
    options.push(vA[i][0]);
  }
  return vA;
}

function launchColorSideBar() {
  var userInterface=HtmlService.createHtmlOutputFromFile('aq5').setTitle('Color Side Bar');
  SpreadsheetApp.getUi().showSidebar(userInterface);
}

aq5.html:

<!DOCTYPE html>
<html>
  <head>
  <base target="_top">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
  <script>
    $(function() {
      google.script.run
      .withSuccessHandler(function(vA){
        var select = document.getElementById("sel1");
        select.options.length = 0; 
        for(var i=0;i<vA.length;i++) {
          select.options[i] = new Option(vA[i][0],vA[i][0]);
        }
      })
      .getSelectOptions();
    });

    function setBGColor() {
      google.script.run.bgcolorSelectionForActiveCell($('#sel1').val());

    }
    console.log("My Code");
  </script>
  </head>  
  <body>
    <select id="sel1" onChange="setBGColor();"></select>
  </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...