Skip to content

Bridge 模块

Bridge 模块主要提供了一些通用能力的 API,例如(获取当前语言信息/获取当前多维表格主题信息等), 获取方式为:

typescript
const bridge = bitable.bridge;
const bridge = bitable.bridge;

setData

通过指定 key 存储当前插件自定义数据,该自定义数据在同一文档同一插件下是共享的。

typescript
setData<T>(key: string, data: T): Promise<boolean>;
setData<T>(key: string, data: T): Promise<boolean>;

示例

typescript
await bitable.bridge.setData('test_key1', 'hello world');
await bitable.bridge.setData('test_key2', 1);
await bitable.bridge.setData('test_key3', { key: 'value' });
await bitable.bridge.setData('test_key1', 'hello world');
await bitable.bridge.setData('test_key2', 1);
await bitable.bridge.setData('test_key3', { key: 'value' });

getData

通过指定 key 获取当前插件自定义数据。

typescript
getData<T>(key: string): Promise<T>;
getData<T>(key: string): Promise<T>;

示例

typescript
await bitable.bridge.getData('test_key1') // 'hello world'
await bitable.bridge.getData('test_key2') // 1
await bitable.bridge.getData('test_key3') // { key: 'value' }
await bitable.bridge.getData('test_key1') // 'hello world'
await bitable.bridge.getData('test_key2') // 1
await bitable.bridge.getData('test_key3') // { key: 'value' }

onDataChange

监听数据存储变化,任意存储 key 的变化都会触发回调。

typescript
onDataChange(callback: (ev: IEventCbCtx)) => void
onDataChange(callback: (ev: IEventCbCtx)) => void

示例

typescript
bridge.onDataChange((event) => {
  console.log('data change', event.data);
})

bridge.setData('test_key', 233);
bridge.onDataChange((event) => {
  console.log('data change', event.data);
})

bridge.setData('test_key', 233);

getBitableUrl

生成多维表格链接。

typescript
getBitableUrl(options: GetBitableUrlOptions): Promise<string>;
getBitableUrl(options: GetBitableUrlOptions): Promise<string>;

其中 GetBitableUrlOptions 的类型参数定义为:

typescript
type GetBitableUrlOptions = {
  tableId: string,
  viewId: string,
  // recordId 为空时打开表格,不为空时打开卡片
  recordId?: string,
  fieldId?: string,
}
type GetBitableUrlOptions = {
  tableId: string,
  viewId: string,
  // recordId 为空时打开表格,不为空时打开卡片
  recordId?: string,
  fieldId?: string,
}

示例

typescript
const res = await bitable.bridge.getBitableUrl({
  tableId: 'tblkrAjKK1wEP4Nf',
  viewId: 'vewboZNrq3',
  fieldId: 'fldfd2ITyJ',
});
// 'https://bytedance.feishu.cn/base/QtTUxxxx?field=fldfd2ITyJ&table=tblkrAjKK1wEP4Nf&view=vewboZNrq3'
const res = await bitable.bridge.getBitableUrl({
  tableId: 'tblkrAjKK1wEP4Nf',
  viewId: 'vewboZNrq3',
  fieldId: 'fldfd2ITyJ',
});
// 'https://bytedance.feishu.cn/base/QtTUxxxx?field=fldfd2ITyJ&table=tblkrAjKK1wEP4Nf&view=vewboZNrq3'

getUserId

获取当前用户 ID。

DANGER

不建议使用,请替换成 getBaseUserId 接口。

typescript
getUserId(): Promise<string>;
getUserId(): Promise<string>;

示例

typescript
const res = await bitable.bridge.getUserId();
const res = await bitable.bridge.getUserId();

getBaseUserId

获取当前用户 id,该用户标识在不同插件点位(侧边栏、连接器等)中均唯一

WARNING

该接口返回的用户 ID 与飞书开放平台的 OpenUserId 并不通用,请勿将其作为全平台的唯一 id。

typescript
getBaseUserId(): Promise<string>;
getBaseUserId(): Promise<string>;

示例

typescript
const res = await bitable.bridge.getBaseUserId();
const res = await bitable.bridge.getBaseUserId();

getTheme

获取当前主题。

typescript
getTheme(): Promise<ThemeModeType>;
getTheme(): Promise<ThemeModeType>;

其中 ThemeModeType 类型定义如下:

typescript
enum ThemeModeType {
  LIGHT = "LIGHT",
  DARK = "DARK"
}
enum ThemeModeType {
  LIGHT = "LIGHT",
  DARK = "DARK"
}

示例

typescript
const theme = await bitable.bridge.getTheme();
// 'LIGHT'
const theme = await bitable.bridge.getTheme();
// 'LIGHT'

onThemeChange

监听主题变化。

typescript
onThemeChange(callback: (ev: IEventCbCtx<ThemeModeCtx>) => void): () => void;
onThemeChange(callback: (ev: IEventCbCtx<ThemeModeCtx>) => void): () => void;

示例

typescript
const theme = await bitable.bridge.onThemeChange((event) => {
  console.log('theme change', event.data.theme);
});
const theme = await bitable.bridge.onThemeChange((event) => {
  console.log('theme change', event.data.theme);
});

getLocale

获取地区设置。

typescript
getLocale(): Promise<Locale>;
getLocale(): Promise<Locale>;

其中 Local 的类型定义如下:

typescript
type Locale = 'zh-CN' | 'zh-TW' | 'zh-HK' | 'en-US' | 'ja-JP' | 'fr-FR' | 'hi-IN' | 'id-ID' | 'it-IT' | 'ko-KR' | 'pt-BR' | 'ru-RU' | 'th-TH' | 'vi-VN' | 'de-DE' | 'es-ES';
type Locale = 'zh-CN' | 'zh-TW' | 'zh-HK' | 'en-US' | 'ja-JP' | 'fr-FR' | 'hi-IN' | 'id-ID' | 'it-IT' | 'ko-KR' | 'pt-BR' | 'ru-RU' | 'th-TH' | 'vi-VN' | 'de-DE' | 'es-ES';

示例

typescript
const locale = await bitable.bridge.getLocale();
// 'zh-CN'
const locale = await bitable.bridge.getLocale();
// 'zh-CN'

getLanguage

获取当前的语言信息。

typescript
getLanguage(): Promise<Language>;
getLanguage(): Promise<Language>;

其中 Language 的类型定义如下:

typescript
type Language = 'zh' | 'zh-TW' | 'zh-HK' | 'en' | 'ja' | 'fr' | 'hi' | 'id' | 'it' | 'ko' | 'pt' | 'ru' | 'th' | 'vi' | 'de' | 'es';
type Language = 'zh' | 'zh-TW' | 'zh-HK' | 'en' | 'ja' | 'fr' | 'hi' | 'id' | 'it' | 'ko' | 'pt' | 'ru' | 'th' | 'vi' | 'de' | 'es';

示例

typescript
const language = await bitable.bridge.getLanguage();
// 'zh'
const language = await bitable.bridge.getLanguage();
// 'zh'

getTenantKey

获取当前租户 Id

typescript
getTenantKey(): Promise<string>;
getTenantKey(): Promise<string>;

示例

typescript
await bitable.bridge.getTenantKey();
await bitable.bridge.getTenantKey();

getEnv

获取当前的环境信息。

typescript
getEnv(): Promise<Env>;
getEnv(): Promise<Env>;

其中 Env 的类型定义如下:

typescript
type Product = 'lark' | 'feishu';
interface Env {
  product: Product;
}
type Product = 'lark' | 'feishu';
interface Env {
  product: Product;
}

示例

typescript
const env = await bitable.bridge.getEnv();
// { product: 'feishu' }
const env = await bitable.bridge.getEnv();
// { product: 'feishu' }

getInstanceId

获取当前的插件的实例 id,每个插件的实例 id 全局唯一。

typescript
getInstanceId(): Promise<string>;
getInstanceId(): Promise<string>;

示例

typescript
const instanceId = await bitable.bridge.getInstanceId();
const instanceId = await bitable.bridge.getInstanceId();

跳转至指定 id 对应的插件,需经过用户授权确认,用户拒绝授权或跳转失败时返回 false。

typescript
navigateToExtension(extensionId: string): Promise<boolean>;
navigateToExtension(extensionId: string): Promise<boolean>;

示例

typescript
await bitable.bridge.navigateToExtension('xxx_id');
await bitable.bridge.navigateToExtension('xxx_id');