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

回攻員

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