# Univer Bases API

> Univer Bases アプリケーションで Facade API を使用する方法を説明します。

- Human documentation: [https://docs.univer.ai/ja-JP/guides/bases/features/core/bases-api](https://docs.univer.ai/ja-JP/guides/bases/features/core/bases-api)

- Agent Markdown: [https://docs.univer.ai/ja-JP/guides/bases/features/core/bases-api.md](https://docs.univer.ai/ja-JP/guides/bases/features/core/bases-api.md)

- Requested language: `ja-JP`

- Content language: `ja-JP`

- Documentation version: `1.2.0`

- Source: [bases/features/core/bases-api.ja-JP.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/bases/features/core/bases-api.ja-JP.mdx)

---

Facade API は、アプリケーションから Bases モデルを操作するためのレイヤーです。Base、テーブル、フィールド、レコード、ビュー、フィルター、並べ替え、グループ、選択範囲の作成や、UI の移動といった一般的な操作に使用できます。

> [!WARNING: 注意]
> Base モデルの変更は同期処理です。UI のアクティブ化メソッドは Promise を返すため `await` してください。

## Facade エントリを有効にする

アプリケーションで使用する各 Bases 機能の Facade エントリをインポートします。

```ts
import { FUniver } from '@univerjs/core/facade'
import '@univerjs-pro/bases/facade'
import '@univerjs-pro/bases-ui/facade'
```

Univer インスタンスと必要なプラグインを登録してから、API オブジェクトを作成します。

```ts
const univerAPI = FUniver.newAPI(univer)
```

## Base を作成・取得する

Facade レイヤーから Base ユニットを作成するには、`createBase` を使用します。より低レベルのセットアップコードでは、`univer.createUnit(UniverInstanceType.UNIVER_BASE, snapshot)` を使用してユニットを作成します。

```ts
const base = univerAPI.createBase({
  id: 'base-demo',
  name: 'Base Demo',
})

const activeBase = univerAPI.getActiveBase()
const sameBase = univerAPI.getBase(base.getId())
```

## テーブルを作成する

```ts
const table = base.insertTable('Tasks', { primaryFieldName: 'Title' })
const status = table.addField('Status', univerAPI.Enum.BaseFieldType.SingleSelect)
```

## レコードを操作する

```ts
const record = table.addRecord({
  Title: 'Write docs',
  Status: 'In progress',
}, univerAPI.Enum.BaseFieldKeyEnum.Name)

record.setValue(status.getId(), 'Done')
```

## UI の状態を操作する

`@univerjs-pro/bases-ui/facade` は、テーブル／ビューのアクティブ化、選択、スクロール、編集、パネル操作のための UI API を追加します。

```ts
const baseUI = univerAPI.getBaseUI()
const view = table.getViews()[0]
if (!view) throw new Error('No table view')
await baseUI.activateTable(table.getId())
await baseUI.activateView(view.getId())
baseUI.setSelection({
  type: 'grid-record',
  tableId: table.getId(),
  viewId: view.getId(),
  recordId: record.getId(),
})
```

## 関連資料

* [一般 API](https://docs.univer.ai/ja-JP/guides/bases/features/core/general-api.md)
* [Bases Facade リファレンス](https://docs.univer.ai/ja-JP/reference/facade/base.md)
* [Base のスナップショットモデル](https://docs.univer.ai/ja-JP/guides/bases/model/base-snapshot.md)
* [テーブル、フィールド、レコード](https://docs.univer.ai/ja-JP/guides/bases/model/tables-fields-records.md)
* [ビュー](https://docs.univer.ai/ja-JP/guides/bases/model/views.md)
