Class EmbeddedChart

EmbeddedChart

代表內嵌至試算表的圖表。

以下範例說明如何修改現有圖表:

var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange("A2: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);

以下範例說明如何建立新圖表:

function newChart(range, sheet) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var 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;如果圖表不在試算表內,則傳回 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' 中的任一個也是有效的格式。

回攻員

Blob:資料做為 blob。


getBlob()

以 blob 傳回這個物件內的資料。

回攻員

Blob:資料做為 blob。


getChartId()

針對包含圖表的試算表傳回不重複的固定 ID;如果圖表不在試算表內,則傳回 null

回攻員

Integer:穩定圖表 ID。


getContainerInfo()

傳回圖表在工作表中位置的相關資訊。

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

var 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

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

// 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

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

var range = sheet.getRange("A1:B10");
var range2 = sheet.getRange("C1:C10");
var 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()

傳回系統視為標頭範圍的列數或欄數。

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

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

傳回這張圖表做為資料來源的範圍。

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

var ranges = chart.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());
}

回攻員

Range[]:做為這張圖表資料來源的範圍陣列


getTransposeRowsAndColumns()

如為 true,系統會切換用於填入圖表的資料列和資料欄。這個變數預設為 false

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

var range = sheet.getRange("A1:B5");
var 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());

回攻員

Booleantrue (用於建構圖表的列和欄)


modify()

傳回可用來修改這張圖表的 EmbeddedChartBuilder。叫用 sheet.updateChart(chart) 即可儲存變更。

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

回攻員

EmbeddedChartBuilder:用來建立嵌入圖表的建構工具