代表內嵌至試算表的圖表。
以下範例說明如何修改現有圖表:
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()
getAs(contentType)
傳回這個物件內的資料,做為轉換為指定內容類型的 blob。這個方法會在檔案名稱中加入適當的副檔名,例如「myfile.pdf」。但是,它假設檔案名稱後面緊接在最後句點的部分 (如有) 是應替換的現有副檔名。因此,「ShoppingList.12.25.2014」會變成「ShoppingList.12.25.pdf」。
如要查看轉換的每日配額,請參閱 Google 服務配額。新建的 Google Workspace 網域可能暫時適用更嚴格的配額。
參數
名稱 | 類型 | 說明 |
---|---|---|
contentType | String | 要轉換的 MIME 類型。對多數 blob 而言,'application/pdf' 是唯一的有效選項。如果是 BMP、GIF、JPEG 或 PNG 格式的圖片,'image/bmp' 、'image/gif' 、'image/jpeg' 或 'image/png' 中的任一個也是有效的格式。 |
回攻員
Blob
:資料做為 blob。
getBlob()
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());
回攻員
ChartMergeStrategy
— MERGE_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()
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());
回攻員
Boolean
— true
(用於建構圖表的列和欄)
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
:用來建立嵌入圖表的建構工具