Изменить цвет бара на основе значения ячейки - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь найти решение для автоматической настройки цвета столбца с накоплением на графике на основе значения или цвета ячейки.

В частности, когда я изменяю значение F2, я хочубар, чтобы изменить цвет, в зависимости от цвета ячейки или значения / строки ячейки.

Вот мой лист: https://docs.google.com/spreadsheets/d/1QwAVPEtQ3l7iIZhLDYMT1I9eGc7HoaFsTyg1p-hi3G8/edit?usp=sharing

Я настроил свои тестовые данные иискал решения, но не нашел метода, который бы точно делал то, что я ищу.

Я надеюсь найти решение, и я склоняюсь к методу Apps Script, так как я не вижу никаких параметров в меню «Условный формат», которые будут управлять форматированием серии диаграмм, и я неНе вижу никаких опций в меню гистограммы для нацеливания на конкретную ячейку.

Любой совет или руководство приветствуется.

1 Ответ

0 голосов
/ 26 июня 2018

Вы можете изменить диаграмму на основе изменений на листе.

Используя простую триггерную функцию onEdit с ее объектом события, вы можете определить, были ли внесены изменения листа, которые изменили вашу ссылочную ячейку.Если редактирование выполнено, то вы можете получить доступ к встроенным диаграммам листа и изменить их по своему усмотрению:

function onEdit(e) {
  if (!e) throw new Error("You ran this manually");
  const sheet = e.range.getSheet();

  // Sanity check: only care about edits on the desired sheet.
  if (sheet.getName() !== "some sheet name with your reference cell on it")
    return;
  // Sanity check: only care about edits to the reference cell:
  if (e.range.getA1Notation() !== "reference cell A1 notation here")
    return;
  // Sanity check: only care if there is a new value.
  if (e.value === undefined)
    return;
  // Example change: alter the color of the 3rd series. Assumption: e.value is a
  // valid CSS color or CSS color code. If it is numeric, write code to transform it.
  modifyChart_(sheet, 2, e.value)
}

function modifyChart_(sheet, seriesIndex, newCssColor) {
  // Assume there is only one chart on this sheet.
  const charts = sheet.getCharts();
  if (charts.length > 1)
    console.warn("Assumption invalid: more than 1 chart on the given sheet");
  const barBuilder = charts[0].modify().asBarChart();

  const option = {};
  option[seriesIndex] = {"color": newCssColor};
  barBuilder.setOption("series", option);

  // Update the chart on the sheet.
  sheet.updateChart(barBuilder.build());
}

Справочная документация (также известная как ТИП):

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...