Как обновить диапазон данных существующего графика, используя скрипт приложения? [Google Sheets] - PullRequest
1 голос
/ 14 февраля 2020

Я создал приведенный ниже скрипт, который запускается из функции onedit, когда ячейка J1 редактируется. График существует на листе «Ежедневные данные». Данные, которые он будет использовать, взяты с листа «Долгосрочные данные».

В качестве руководства я использовал следующую ссылку: https://developers.google.com/apps-script/reference/spreadsheet/embedded-chart.

Спасибо за любая помощь.

function onEdit(e) {

  //This IF statement ensures it will only run when cell J1 is edited:
  if (
    e.source.getSheetName() == "Daily Data" &&
    e.range.columnStart == 10 &&
    e.range.columnEnd == 10 &&
    e.range.rowStart >= 1 &&
    e.range.rowEnd <= 1 
  ) { 

    var spreadsheet = SpreadsheetApp.getActive();
    var daily_data = spreadsheet.getSheetByName("Daily Data");
    var LTD_data = spreadsheet.getSheetByName("Long Term Data");

       //ABOVE HAS BEEN TESTED AND RUNS SUCCESFULLY. THE BELOW DOES NOT...

    var chart = daily_data.getCharts()[0];
    var range = LTD_data.getRange("B2:J3")
    chart = chart.modify()
        .addRange(range)
        .build();
    spreadsheet.updateChart(chart);
  }
}
;

1 Ответ

3 голосов
/ 14 февраля 2020
  • Вы хотите обновить диаграмму в листе Daily Data с помощью Google Apps Script.

Если мое понимание верно, как насчет следующей модификации?

Точка модификации:

  • updateChart() - это метод Class Class. Но в вашем скрипте updateChart() используется для таблицы классов. Таким образом, скрипт не работает.

Когда указанная точка отражается на вашем скрипте, она становится следующей:

Pattern 1:

В этом шаблон, диапазон добавляется к существующим диапазонам.

Модифицированный скрипт:

От:
spreadsheet.updateChart(chart);
До:
daily_data.updateChart(chart);

Шаблон 2:

В этом шаблоне существующие диапазоны удаляются и добавляется новый диапазон.

Модифицированный скрипт:

С:
var chart = daily_data.getCharts()[0];
var range = LTD_data.getRange("B2:J3")
chart = chart.modify()
    .addRange(range)
    .build();
spreadsheet.updateChart(chart);
Кому:
var chart = daily_data.getCharts()[0];
var range = LTD_data.getRange("B2:J3")
var ranges = chart.getRanges();
chart = chart.modify();
ranges.forEach(function(range) {chart.removeRange(range)});
var modifiedChart = chart.addRange(range).build();
daily_data.updateChart(modifiedChart);

Примечание:

  • В приведенном выше случае можно использовать простой триггер события OnEdit.

Ссылки:

Если я неправильно понял ваш вопрос, и это был не тот результат, который вы хотите, я приношу свои извинения.

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