Я хочу отформатировать диапазон ячеек, которые я выбрал, щелкнув по предварительно отформатированной ячейке

#google-apps-script #google-sheets

#google-apps-script #google-sheets

Вопрос:

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

Комментарии:

1. Это было бы довольно легко сделать на боковой панели.

2. Вы имеете в виду с помощью условного форматирования? К сожалению, способ настройки этого листа, в ячейках нет данных для форматирования. Тот факт, что они выбраны, — это единственный способ, которым они отличаются от соседних ячеек.

Ответ №1:

Попробуйте это:

Просто запустите setColorFromSidebar(), и это создаст боковую панель с четырьмя кнопками на ней. Затем выберите диапазон и нажмите одну из кнопок. Поместите обе функции в Code.gs досье.

 function setColorFromSidebar() {
  var ss=SpreadsheetApp.getActive();
  var html='<input type="button" value="Red" onClick="setBackground('#ff0000');" />';
  html ='<br /><input type="button" value="Green" onClick="setBackground('#00ff00');" />';
  html ='<br /><input type="button" value="Blue" onClick="setBackground('#0000ff');" />';
  html ='<br /><input type="button" value="White" onClick="setBackground('#ffffff');" />';
  html ='<script>function setBackground(color) { google.script.run.setBackGround(color);}</script>';
  var userInterface=HtmlService.createHtmlOutput(html);
  SpreadsheetApp.getUi().showSidebar(userInterface);
}

function setBackGround(color) {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var rg=sh.getActiveRange();
  rg.setBackground(color);
}
  

Комментарии:

1. Спасибо! Это отлично работает! Есть какие-либо рекомендации о том, как сохранить боковую панель активной при открытии / закрытии? Я не хочу, чтобы пользователям приходилось копаться в меню, чтобы включить его (в противном случае они могли бы просто нажать на корзину для рисования. ;))

2. Загрузите его в openopen(). На самом деле это не меняет никаких данных, поэтому я не думаю, что какие-либо разрешения задействованы, но я не уверен.