Class EmbeddedChart

嵌入式图表

表示已嵌入电子表格中的图表。

此示例展示了如何修改现有图表:

const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getRange('A2:B8');
let 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);

以下示例展示了如何创建新图表:

function newChart(range) {
  const sheet = SpreadsheetApp.getActiveSheet();
  const chartBuilder = sheet.newChart();
  chartBuilder.addRange(range)
      .setChartType(Charts.ChartType.LINE)
      .setOption('title', 'My Line Chart!');
  sheet.insertChart(chartBuilder.build());
}

方法

方法返回类型简介
asDataSourceChart()DataSourceChart如果图表是数据源图表,则强制转换为数据源图表实例;否则为 null
getAs(contentType)Blob以转换为指定内容类型的 blob 形式返回此对象内的数据。
getBlob()Blob以 blob 形式返回此对象内的数据。
getChartId()Integer返回图表的稳定标识符,该标识符在包含图表的电子表格中是唯一的;如果图表不在电子表格中,则返回 null
getContainerInfo()ContainerInfo返回有关图表在工作表中的位置的信息。
getHiddenDimensionStrategy()ChartHiddenDimensionStrategy返回用于处理隐藏行和列的策略。
getMergeStrategy()ChartMergeStrategy返回存在多个范围时使用的合并策略。
getNumHeaders()Integer返回被视为标题的范围的行数或列数。
getOptions()ChartOptions返回相应图表的选项,例如高度、颜色和轴。
getRanges()Range[]返回相应图表用作数据源的范围。
getTransposeRowsAndColumns()Boolean如果值为 true,则用于填充图表的行和列会进行切换。
modify()EmbeddedChartBuilder返回可用于修改相应图表的 EmbeddedChartBuilder

详细文档

asDataSourceChart()

如果图表是数据源图表,则强制转换为数据源图表实例;否则为 null

返回

DataSourceChart - 数据源图表。


getAs(contentType)

以转换为指定内容类型的 blob 形式返回此对象内的数据。此方法会向文件名添加适当的扩展名,例如“myfile.pdf”。不过,它会假设文件名中最后一个句点(如果有)后面的部分是应替换的现有扩展名。因此,“ShoppingList.12.25.2014”会变成“ShoppingList.12.25.pdf”。

如需查看转化方面的每日配额,请参阅 Google 服务的配额。新创建的 Google Workspace 网域可能暂时受到更严格的配额限制。

参数

名称类型说明
contentTypeString要转换成的 MIME 类型。对于大多数 blob,'application/pdf' 是唯一有效的选项。对于采用 BMP、GIF、JPEG 或 PNG 格式的图片,'image/bmp''image/gif''image/jpeg''image/png' 中的任何一个也有效。对于 Google 文档,'text/markdown' 也有效。

返回

Blob - 以 blob 形式表示的数据。


getBlob()

以 blob 形式返回此对象内的数据。

返回

Blob - 以 blob 形式表示的数据。


getChartId()

返回图表的稳定标识符,该标识符在包含图表的电子表格中是唯一的;如果图表不在电子表格中,则返回 null

返回

Integer - 一个稳定的图表标识符。


getContainerInfo()

返回有关图表在工作表中的位置的信息。

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

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

const containerInfo = chart.getContainerInfo();

// Logs the values 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(),
);

返回

ContainerInfo - 包含图表容器位置的对象。


getHiddenDimensionStrategy()

返回用于处理隐藏行和列的策略。默认值为 IGNORE_ROWS

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

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

// Logs the strategy to use for hidden rows and columns which is
// Charts.ChartHiddenDimensionStrategy.IGNORE_COLUMNS in this case.
Logger.log(chart.getHiddenDimensionStrategy());

返回

ChartHiddenDimensionStrategy - 用于隐藏行和列的策略。


getMergeStrategy()

返回存在多个范围时使用的合并策略。如果为 MERGE_ROWS,则合并行;如果为 MERGE_COLUMNS,则合并列。默认值为 MERGE_COLUMNS

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

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

// Logs whether rows of multiple ranges are merged, which is MERGE_ROWS in this
// case.
Logger.log(chart.getMergeStrategy());

返回

ChartMergeStrategy - MERGE_ROWS 如果行跨多个范围合并;MERGE_COLUMNS 如果列跨多个范围合并。


getNumHeaders()

返回被视为标题的范围的行数或列数。

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

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

// Logs the number of rows or columns to use as headers, which is 1 in this
// case.
Logger.log(chart.getHeaders());

返回

Integer - 被视为标题的行数或列数。负值表示系统会自动检测标题。


getOptions()

返回相应图表的选项,例如高度、颜色和轴。

返回的选项是不可变的。

返回

ChartOptions - 此图表的选项,例如高度、颜色和轴。


getRanges()

返回相应图表用作数据源的范围。

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

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

const ranges = chart.getRanges();

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

返回

Range[] - 用作相应图表数据源的范围数组。


getTransposeRowsAndColumns()

如果值为 true,则用于填充图表的行和列会进行切换。默认值为 false

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

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

// Logs whether rows and columns should be transposed, which is true in this
// case.
Logger.log(chart.getTransposeRowsAndColumns());

返回

Boolean - 如果用于构建图表的行和列已转置,则为 True


modify()

返回可用于修改相应图表的 EmbeddedChartBuilder。调用 sheet.updateChart(chart) 以保存所有更改。

const sheet = SpreadsheetApp.getActiveSheet();
let chart = sheet.getCharts()[0];
chart = chart.modify()
            .setOption('width', 800)
            .setOption('height', 640)
            .setPosition(5, 5, 0, 0)
            .build();
sheet.updateChart(chart);

返回

EmbeddedChartBuilder - 用于创建嵌入式图表的构建器。