Class EmbeddedChartBuilder

EmbeddedChartBuilder

Builder used to edit an EmbeddedChart. Changes made to the chart are not saved until Sheet.updateChart(chart) is called on the rebuilt chart.

var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange("A1:B8");
var chart = sheet.getCharts()[0];
chart = chart.modify()
    .addRange(range)
    .setOption('title', 'Updated!')
    .setOption('animation.duration', 500)
    .setPosition(2,2,0,0)
    .build();
sheet.updateChart(chart);

Methods

MethodReturn typeBrief description
addRange(range)EmbeddedChartBuilderAdds a range to the chart this builder modifies.
asAreaChart()EmbeddedAreaChartBuilderSets the chart type to AreaChart and returns an EmbeddedAreaChartBuilder.
asBarChart()EmbeddedBarChartBuilderSets the chart type to BarChart and returns an EmbeddedBarChartBuilder.
asColumnChart()EmbeddedColumnChartBuilderSets the chart type to ColumnChart and returns an EmbeddedColumnChartBuilder.
asComboChart()EmbeddedComboChartBuilderSets the chart type to ComboChart and returns an EmbeddedComboChartBuilder.
asHistogramChart()EmbeddedHistogramChartBuilderSets the chart type to HistogramChart and returns an EmbeddedHistogramChartBuilder.
asLineChart()EmbeddedLineChartBuilderSets the chart type to LineChart and returns an EmbeddedLineChartBuilder.
asPieChart()EmbeddedPieChartBuilderSets the chart type to PieChart and returns an EmbeddedPieChartBuilder.
asScatterChart()EmbeddedScatterChartBuilderSets the chart type to ScatterChart and returns an EmbeddedScatterChartBuilder.
asTableChart()EmbeddedTableChartBuilderSets the chart type to TableChart and returns an EmbeddedTableChartBuilder.
build()EmbeddedChartBuilds the chart to reflect all changes made to it.
getChartType()ChartTypeReturns the current chart type.
getContainer()ContainerInfoReturn the chart ContainerInfo, which encapsulates where the chart appears on the sheet.
getRanges()Range[]Returns a copy of the list of ranges currently providing data for this chart.
removeRange(range)EmbeddedChartBuilderRemoves the specified range from the chart this builder modifies.
setChartType(type)EmbeddedChartBuilderChanges the type of chart.
setHiddenDimensionStrategy(strategy)EmbeddedChartBuilderSets the strategy to use for hidden rows and columns.
setMergeStrategy(mergeStrategy)EmbeddedChartBuilderSets the merge strategy to use when more than one range exists.
setNumHeaders(headers)EmbeddedChartBuilderSets the number of rows or columns of the range that should be treated as headers.
setOption(option, value)EmbeddedChartBuilderSets advanced options for this chart.
setPosition(anchorRowPos, anchorColPos, offsetX, offsetY)EmbeddedChartBuilderSets the position, changing where the chart appears on the sheet.
setTransposeRowsAndColumns(transpose)EmbeddedChartBuilderSets whether the chart's rows and columns are transposed.

Detailed documentation

addRange(range)

Adds a range to the chart this builder modifies. Does not add the range if it has already been added to the chart.

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var chart = sheet.newChart()
    .setChartType(Charts.ChartType.BAR)
    .addRange(sheet.getRange("A1:B8"))
    .setPosition(5, 5, 0, 0)
    .build();

sheet.insertChart(chart);

Parameters

NameTypeDescription
rangeRangeThe range to add.

Return

EmbeddedChartBuilder — this builder, for chaining


asAreaChart()

Sets the chart type to AreaChart and returns an EmbeddedAreaChartBuilder.

Return

EmbeddedAreaChartBuilder — a builder for an area chart


asBarChart()

Sets the chart type to BarChart and returns an EmbeddedBarChartBuilder.

Return

EmbeddedBarChartBuilder — a builder for a bar chart


asColumnChart()

Sets the chart type to ColumnChart and returns an EmbeddedColumnChartBuilder.

Return

EmbeddedColumnChartBuilder — a builder for a column chart


asComboChart()

Sets the chart type to ComboChart and returns an EmbeddedComboChartBuilder.

Return

EmbeddedComboChartBuilder — a builder for a combo chart


asHistogramChart()

Sets the chart type to HistogramChart and returns an EmbeddedHistogramChartBuilder.

Return

EmbeddedHistogramChartBuilder — a builder for a histogram chart


asLineChart()

Sets the chart type to LineChart and returns an EmbeddedLineChartBuilder.

Return

EmbeddedLineChartBuilder — a builder for a line chart


asPieChart()

Sets the chart type to PieChart and returns an EmbeddedPieChartBuilder.

Return

EmbeddedPieChartBuilder — a builder for a pie chart


asScatterChart()

Sets the chart type to ScatterChart and returns an EmbeddedScatterChartBuilder.

Return

EmbeddedScatterChartBuilder — a builder for a scatter chart


asTableChart()

Sets the chart type to TableChart and returns an EmbeddedTableChartBuilder.

Return

EmbeddedTableChartBuilder — a builder for a table chart


build()

Builds the chart to reflect all changes made to it.

This method does not automatically draw the chart on top of the spreadsheet. A new chart must be inserted via sheet.insertChart(chart), and an existing chart should be updated via sheet.updateChart(chart).

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var range = sheet.getRange("A1:B5");
var chart = sheet.newChart()
    .setChartType(Charts.ChartType.BAR)
    .addRange(range)
    .setPosition(5, 5, 0, 0)
    .build();

sheet.insertChart(chart);

Return

EmbeddedChart — the created chart, which must still be added to the spreadsheet


getChartType()

Returns the current chart type.

Return

ChartType — the chart type


getContainer()

Return the chart ContainerInfo, which encapsulates where the chart appears on the sheet.

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var chartBuilder = sheet.newChart()
    .setChartType(Charts.ChartType.BAR)
    .addRange(sheet.getRange("A1:B8"))
    .setPosition(5, 5, 0, 0);

// This method returns the exact same data as Chart#getContainerInfo()
var containerInfo = chartBuilder.getContainer();

// Logs the values we used in setPosition()
Logger.log("Anchor Column: %s\r\nAnchor Row %s\r\nOffset X %s\r\nOffset Y %s",
          containerInfo.getAnchorColumn(),
          containerInfo.getAnchorRow(),
          containerInfo.getOffsetX(),
          containerInfo.getOffsetY());

Return

ContainerInfo — an object containing the chart container's position


getRanges()

Returns a copy of the list of ranges currently providing data for this chart. Use addRange(range) and removeRange(range) to modify this list.

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var chartBuilder = sheet.newChart()
    .setChartType(Charts.ChartType.BAR)
    .addRange(sheet.getRange("A1:B8"))
    .setPosition(5, 5, 0, 0);

var ranges = chartBuilder.getRanges();

// There's only one range as a data source for this chart,
// so this logs "A1:B8"
for (var i in ranges) {
  var range = ranges[i];
  Logger.log(range.getA1Notation());
}

Return

Range[] — an array of ranges that serve as the chart to be built's data source


removeRange(range)

Removes the specified range from the chart this builder modifies. Does not throw an error if the range is not in this chart.

The range removed must match up with a range added via addRange(range); otherwise no change is made to the chart. This method cannot be used to partially remove values from a range.

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var firstRange = sheet.getRange("A1:B5");
var secondRange = sheet.getRange("A6:B8");

var chartBuilder = sheet.newChart()
    .setChartType(Charts.ChartType.BAR)
    .addRange(firstRange)
    // This range will render in a different color
    .addRange(secondRange)
    .setPosition(5, 5, 0, 0);

// Note that you can use either of these two formats, but the range
// MUST match up with a range that was added via addRange(), or it
// will not be removed, and will not throw an exception
chartBuilder.removeRange(firstRange);
chartBuilder.removeRange(sheet.getRange("A6:B8"));

var chart = chartBuilder.build();

sheet.insertChart(chart);

Parameters

NameTypeDescription
rangeRangeThe range to remove.

Return

EmbeddedChartBuilder — this builder, for chaining


setChartType(type)

Changes the type of chart. Not all embedded chart types are currently supported. See ChartType.

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var range = sheet.getRange("A1:B5");
var chart = sheet.newChart()
    .setChartType(Charts.ChartType.BAR)
    .addRange(range)
    .setPosition(5, 5, 0, 0)
    .build();

sheet.insertChart(chart);

Parameters

NameTypeDescription
typeChartTypeThe type to change this chart into.

Return

EmbeddedChartBuilder — this builder, for chaining


setHiddenDimensionStrategy(strategy)

Sets the strategy to use for hidden rows and columns. Defaults to IGNORE_ROWS.

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var range = sheet.getRange("A1:B5");
var chart = sheet.newChart()
    .setChartType(Charts.ChartType.BAR)
    .addRange(range)
    .setHiddenDimensionStrategy(Charts.ChartHiddenDimensionStrategy.IGNORE_COLUMNS)
    .setPosition(5, 5, 0, 0)
    .build();

sheet.insertChart(chart);

Parameters

NameTypeDescription
strategyChartHiddenDimensionStrategyThe strategy to use for hidden rows and columns.

Return

EmbeddedChartBuilder — this builder, for chaining


setMergeStrategy(mergeStrategy)

Sets the merge strategy to use when more than one range exists. If MERGE_ROWS, rows are merged; if MERGE_COLUMNS, columns are merged. Defaults to MERGE_COLUMNS.

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var range = sheet.getRange("A1:B10");
var range2 = sheet.getRange("C:C10");
var chart = sheet.newChart()
    .setChartType(Charts.ChartType.BAR)
    .addRange(range)
    .addRange(range2)
    .setMergeStrategy(Charts.ChartMergeStrategy.MERGE_ROWS)
    .setPosition(5, 5, 0, 0)
    .build();

sheet.insertChart(chart);

Parameters

NameTypeDescription
mergeStrategyChartMergeStrategyThe merge strategy to use.

Return

EmbeddedChartBuilder — this builder, for chaining


setNumHeaders(headers)

Sets the number of rows or columns of the range that should be treated as headers.

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var range = sheet.getRange("A1:B5");
var chart = sheet.newChart()
    .setChartType(Charts.ChartType.BAR)
    .addRange(range)
    .setNumHeaders(1)
    .setPosition(5, 5, 0, 0)
    .build();

sheet.insertChart(chart);

Parameters

NameTypeDescription
headersIntegerThe number of rows or columns to treat as headers. Negative values cause headers to be auto-detected.

Return

EmbeddedChartBuilder — this builder, for chaining


setOption(option, value)

Sets advanced options for this chart. Lookup the chart type in the Charts API Chart Gallery for a listing of the available options. For example, the options for an area chart are listed here.

This method does not validate the option you specify is valid for this chart type nor if the value is of the correct format/structure.

This example shows how to change the animation duration to 1 second and set a legend.

builder.setOption('title', 'Earnings projections');
builder.setOption('animation.duration', 1000);
builder.setOption('legend', {position: 'top', textStyle: {color: 'blue', fontSize: 16}});

Parameters

NameTypeDescription
optionStringThe name of the option.
valueObjectThe value of the option.

Return

EmbeddedChartBuilder — this builder, for chaining


setPosition(anchorRowPos, anchorColPos, offsetX, offsetY)

Sets the position, changing where the chart appears on the sheet. anchorRowPos and anchorColPos are 1-indexed.

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var range = sheet.getRange("A1:B5");
var chart = sheet.newChart()
    .setChartType(Charts.ChartType.BAR)
    .addRange(range)
    .setPosition(5, 5, 0, 0)
    .build();

sheet.insertChart(chart);

Parameters

NameTypeDescription
anchorRowPosIntegerThe chart's top side is anchored in this row.
anchorColPosIntegerThe chart's left side is anchored in this column.
offsetXIntegerThe chart's upper right-hand corner is offset by this many pixels.
offsetYIntegerThe chart's lower left-hand corner is offset by this many pixels.

Return

EmbeddedChartBuilder — this builder, for chaining


setTransposeRowsAndColumns(transpose)

Sets whether the chart's rows and columns are transposed. If set to true, the rows and columns are switched. Defaults to false.

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var range = sheet.getRange("A1:B5");
var chart = sheet.newChart()
    .setChartType(Charts.ChartType.BAR)
    .addRange(range)
    .setTransposeRowsAndColumns(true)
    .setPosition(5, 5, 0, 0)
    .build();

sheet.insertChart(chart);

Parameters

NameTypeDescription
transposeBooleanIf true, the rows and columns used to construct the chart are transposed.

Return

EmbeddedChartBuilder — this builder, for chaining

发送以下问题的反馈:

此网页
Apps Script
Apps Script
需要帮助?请访问我们的支持页面