元素

元素是 Board 中可見的內容,包括文字、圖片、形狀和連接線。透過 FBoard facade 修改元素時,會沿用標準命令流程,因此能參與復原、重做和協同編輯。

讀取元素

讀取目前頁面前,先取得目前的 Board。如果只需要穩定的 ID、類型、邊界和層級順序,請使用描述資訊,避免依賴完整的內部快照結構。

TypeScript
const board = univerAPI.getActiveBoard()if (!board) throw new Error('No active board')const elements = board.describeElements()const shapes = board.findElements({  elementType: univerAPI.Enum.BoardElementType.Shape,})

插入形狀和文字

優先使用語意明確的插入方法,而不是自行建立底層元素快照。insertShape 的幾何資訊放在 transform 中;回傳的即時形狀物件還提供文字和樣式 API。

TypeScript
const shape = board.insertShape({  shapeType: univerAPI.Enum.ShapeTypeEnum.RoundRect,  transform: { left: 80, top: 80, width: 180, height: 100 },  name: 'Review card',})if (!shape) throw new Error('Cannot insert shape')shape.getText().setText('Review')shape.setRotation(6)

獨立文字使用 insertText,圖片使用 insertImage;需要在一個命令中加入多個元素時,使用對應的批次方法。

編輯形狀文字

使用下方或前面範例中 insertShape() 回傳的形狀物件。getText() 回傳即時的 FShapeText 物件,可透過 getPlainText() 讀取純文字、setText() 取代全部文字,並設定字型、顏色與對齊方式。

TypeScript
if (!shape) throw new Error('Shape is not available')const shapeText = shape.getText()console.log(shapeText.getPlainText())shapeText  .setText('Quarterly review')  .setFontSize(18)  .setColor('#2563eb')  .setBold(true)  .setHorizontalAlign(univerAPI.Enum.HorizontalAlign.CENTER)  .setVerticalAlign(univerAPI.Enum.VerticalAlign.MIDDLE)

setText() 會取代既有文字;同一形狀需要多種文字樣式時,請使用 setRichText()。編輯既有豐富文字時,先呼叫 getRichText()?.copy(),修改建構器後再傳給 setRichText();僅修改建構器不會自動寫回。更多選項請參閱文字樣式與文字方塊內距和版面配置。

TypeScript
const richText = univerAPI.newRichText()  .text('Quarterly ')  .bold('review')shapeText.setRichText(richText)

連接元素

連接線可以關聯既有元素的 ID。如果之後需要修改樣式、標籤或端點,請保留回傳的連接線或其 ID。

TypeScript
const target = board.insertShape({  shapeType: univerAPI.Enum.ShapeTypeEnum.Rect,  transform: { left: 360, top: 80, width: 180, height: 100 },})if (!target) throw new Error('Cannot insert target')const connector = board.insertConnector({  fromElementId: shape.getId(),  toElementId: target.getId(),  style: { endMarker: { type: 'filledTriangle', size: 'md' } },})if (!connector) throw new Error('Cannot insert connector')

變形和排列元素

只傳入需要修改的屬性。層級順序、對齊、分布和自動版面配置方法同樣透過元素 ID 定位物件。

TypeScript
if (!board.setElementTransform(shape.getId(), { left: 120, top: 140, rotation: 12 })) {  throw new Error('Cannot transform shape')}if (!board.bringElementsToFront([shape.getId()])) {  throw new Error('Cannot bring shape to front')}

刪除元素

刪除單一元素使用 removeElement,原子化批次刪除使用 removeElements。兩者都會回傳命令是否執行成功。

TypeScript
if (!board.removeElements([connector.id, target.getId()])) {  throw new Error('Cannot remove elements')}

若要建立帶邊框的群組或泳道,請繼續閱讀容器與泳道。另請參考 Boards facade API 和 Board 元素資料模型。

你覺得這篇文檔如何?

© 2026 DreamNum Co., Ltd.