Я выяснил, в чем заключались проблемы, в основном, путем экспериментов, я все еще придерживаюсь мнения, что в документации нет ясности и хороших примеров.
Но вот мое понимание.
Прежде всего, есть три класса для решения этой проблемы: Sheet, EmbeddedChart и EmbeddedChartBuilder.
EmbeddedChartBuilder - это то, что возвращается Sheet.newChart (), используя метод .build (), вы получаете класс EmbeddedChart, который можно использовать в качестве параметра для Sheet.insertChart ().
Кроме того, в результате экспериментов кажется, что вы должны вставить диаграмму с помощью Sheet.insertChart (EmbeddedChart), прежде чем сможете использовать EmbeddedChart.modify (), которая, в свою очередь, возвращает EmbeddedChartBuilder, который можно использовать для связывания любого числа методов, таких как добавление диапазона. И, конечно же, вам все равно придется использовать .build () для возврата EmbeddedChart из EmbeddedChartBuilder, а затем Sheet.updateChart (EmbeddedChart).
Последней проблемой была ошибка, которую я допустил, я вызывал .addRange (), используя строку в качестве параметра, однако addRange требует объект Range.
В любом случае, вот некоторый код, демонстрирующий пример использования, вы можете связать столько модификаторов (), сколько хотите, например, в цикле, который перебирает листы.
Примечание: getSheet - это пользовательская функция, которая делает то, что вы ожидаете.
function createCharts(){
var sheet = getSheet('Graphs');
var chart = sheet.newChart().setChartType(Charts.ChartType.LINE).setPosition(2,1,0,0).build(); // build returns an EmbeddedChart object
Logger.log(chart);
sheet.insertChart(chart);
chart = chart.modify().addRange(getSheet('someSheetName').getRange('B1:B999')).build();
Logger.log(chart);
sheet.updateChart(chart);
}
РЕДАКТИРОВАТЬ: вот вся работающая функция, бесполезная вне этого конкретного кода, однако вы можете увидеть логику, стоящую за ней, я попытаюсь сделать ее универсально полезной, перебирая листы или что-то в этом роде.
function createChart(range, x, y, title, width, height){
// range: string; x: int; y: int; title: string; width: int; height; int
// Creates a chart with data from all usernames for a given range at x row, y column, with a title, a width and height
var sheet = getSheet('Graphs');
// chart setup
var chart = sheet.newChart()
.setChartType(Charts.ChartType.LINE)
.setPosition(x,y,0,0)
.setNumHeaders(1)
.setOption('title', title)
.setOption('width', width)
.setOption('height', height)
.build();
sheet.insertChart(chart);
// for every username, add corresponding data into chart
for(var i = 0; i < fortniteUsernames.length; i++){
var username = fortniteUsernames[i];
chart = chart.modify().addRange(getSheet(username).getRange(range)).build();
sheet.updateChart(chart);
}
}