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傳回圖表的穩定 ID,該 ID 在包含圖表的試算表中是唯一的,如果圖表不在試算表中,則傳回 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()

傳回圖表的穩定 ID,該 ID 在包含圖表的試算表中是唯一的,如果圖表不在試算表中,則傳回 null

回攻員

Integer:穩定的圖表 ID。


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 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(),
);

回攻員

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:用於建立嵌入式圖表的建構工具