Base 模块
当前多维表格实例,多维表格相关 API 的主入口。
typescript
import { bitable } from '@lark-base-open/js-sdk';
const base = bitable.base;
import { bitable } from '@lark-base-open/js-sdk';
const base = bitable.base;
读接口
isEditable
是否可以编辑当前多维表格。
typescript
isEditable(): Promise<boolean>;
isEditable(): Promise<boolean>;
示例
typescript
const isEditable = await base.isEditable();
const isEditable = await base.isEditable();
getSelection
获取当前多维表格激活的相关信息(当前文档 id、数据表 id、视图 id 等)。
typescript
getSelection: () => Promise<Selection>;
interface Selection {
baseId: string | null,
tableId: string | null,
fieldId: string | null,
viewId: string | null,
recordId: string | null
}
getSelection: () => Promise<Selection>;
interface Selection {
baseId: string | null,
tableId: string | null,
fieldId: string | null,
viewId: string | null,
recordId: string | null
}
示例
typescript
const selection = await bitable.base.getSelection();
const selection = await bitable.base.getSelection();
getActiveTable
获取当前选中的数据表 table
。
typescript
getActiveTable: () => Promise<ITable>;
getActiveTable: () => Promise<ITable>;
示例
typescript
const table = await base.getActiveTable();
const table = await base.getActiveTable();
getTable
获取指定数据表 table
,支持传入 table
的 id 或名称。
typescript
getTable(idOrName: string): Promise<ITable>
getTable(idOrName: string): Promise<ITable>
示例
typescript
// 传入 table id
const table = await base.getTable('t_idxxxx');
// 传入 table name
const table = await base.getTable('Table_For_Test');
// 传入 table id
const table = await base.getTable('t_idxxxx');
// 传入 table name
const table = await base.getTable('Table_For_Test');
getTableById
通过数据表 id
来获取指定数据表。
typescript
getTableById(tableId: string): ITable;
getTableById(tableId: string): ITable;
示例
typescript
const table = await base.getTableById('t_idxxxx');
const table = await base.getTableById('t_idxxxx');
getTableByName
通过数据表名称获取指定数据表。
typescript
getTableByName(name: string): Promise<ITable>
getTableByName(name: string): Promise<ITable>
示例
typescript
const table = await base.getTableByName('Table_For_Test');
const table = await base.getTableByName('Table_For_Test');
getTableList
获取当前多维表格下所有的数据表。
typescript
getTableList(): Promise<ITable[]>;
getTableList(): Promise<ITable[]>;
示例
typescript
const tableList = await base.getTableList();
const tableList = await base.getTableList();
getTableMetaById
通过 id 获取指定数据表的元信息。
typescript
getTableMetaById(tableId: string): Promise<ITableMeta>
getTableMetaById(tableId: string): Promise<ITableMeta>
示例
typescript
const tableMeta = await base.getTableMetaById('t_id');
const tableMeta = await base.getTableMetaById('t_id');
getTableMetaList
获取当前多维表格下所有数据表元信息。
typescript
getTableMetaList(): Promise<ITableMeta[]>
getTableMetaList(): Promise<ITableMeta[]>
示例
typescript
const tableMetaList = await base.getTableMetaList();
const tableMetaList = await base.getTableMetaList();
getPermission
获取 Base、Table、Field、Record、Cell 等不同实体的权限,当返回 true 的时候表示有权限,返回为 false 的时候没有权限。
typescript
getPermission(params: GetPermissionParams): Promise<boolean>;
getPermission(params: GetPermissionParams): Promise<boolean>;
其中 GetPermissionParams
的类型定义如下:
typescript
type GetPermissionParams = BasePermissionParams | TablePermissionParams | RecordPermissionParams | FieldPermissionParams | CellPermissionParams;
interface BasePermissionParams {
entity: PermissionEntity.Base;
type: BaseOperation;
}
interface TablePermissionParams {
entity: PermissionEntity.Table;
param: {
tableId?: string;
};
type: TableOperation;
}
interface RecordPermissionParams {
entity: PermissionEntity.Record;
param: {
tableId: string;
recordId?: string;
};
type: RecordOperation;
}
interface FieldPermissionParams {
entity: PermissionEntity.Field;
param: {
tableId: string;
fieldId?: string;
};
type: FieldOperation;
}
interface CellPermissionParams {
entity: PermissionEntity.Cell;
param: {
tableId: string;
recordId?: string;
fieldId?: string;
};
type: CellOperation;
}
type GetPermissionParams = BasePermissionParams | TablePermissionParams | RecordPermissionParams | FieldPermissionParams | CellPermissionParams;
interface BasePermissionParams {
entity: PermissionEntity.Base;
type: BaseOperation;
}
interface TablePermissionParams {
entity: PermissionEntity.Table;
param: {
tableId?: string;
};
type: TableOperation;
}
interface RecordPermissionParams {
entity: PermissionEntity.Record;
param: {
tableId: string;
recordId?: string;
};
type: RecordOperation;
}
interface FieldPermissionParams {
entity: PermissionEntity.Field;
param: {
tableId: string;
fieldId?: string;
};
type: FieldOperation;
}
interface CellPermissionParams {
entity: PermissionEntity.Cell;
param: {
tableId: string;
recordId?: string;
fieldId?: string;
};
type: CellOperation;
}
示例
使用的时候,需要传入对应的配置,来查询对应的权限, 下面展示一个查询字段编辑权限
的例子:
typescript
import { PermissionEntity, OperationType } from '@lark-base-open/js-sdk';
const fieldInfo: FieldPermissionParams = {
entity: PermissionEntity.Field,
param: {
tableId,
fieldId,
},
type: OperationType.Editable,
}
const hasPermission = await base.getPermission(params);
import { PermissionEntity, OperationType } from '@lark-base-open/js-sdk';
const fieldInfo: FieldPermissionParams = {
entity: PermissionEntity.Field,
param: {
tableId,
fieldId,
},
type: OperationType.Editable,
}
const hasPermission = await base.getPermission(params);
写接口
addTable
添加数据表,支持设置表名和字段,返回创建成功数据表的 id 和索引位置。
WARNING
暂不支持配置字段,可以创建数据表后通过 Table 模块中的方法添加字段。
typescript
addTable(config: IAddTableConfig): Promise<{ tableId: string, index: number }>;
interface IAddTableConfig {
name: string; // 表名
}
addTable(config: IAddTableConfig): Promise<{ tableId: string, index: number }>;
interface IAddTableConfig {
name: string; // 表名
}
示例
typescript
const { tableId, index } = await bitable.base.addTable({
name: '测试添加数据表'
})
const { tableId, index } = await bitable.base.addTable({
name: '测试添加数据表'
})
setTable
修改数据表,目前仅支持修改数据表的名称,修改成功会返回当前被修改数据表 id。
typescript
setTable(tableId: string, config: ISetTableConfig): Promise<string>;
interface ISetTableConfig {
name: string; // 表名
}
setTable(tableId: string, config: ISetTableConfig): Promise<string>;
interface ISetTableConfig {
name: string; // 表名
}
示例
typescript
const tableId = await bitable.base.setTable({
name: '修改数据表'
})
const tableId = await bitable.base.setTable({
name: '修改数据表'
})
deleteTable
删除指定数据表。
typescript
deleteTable(tableId: string): Promise<boolean>;
deleteTable(tableId: string): Promise<boolean>;
示例
typescript
const table = await bitable.base.getActiveTable();
await bitable.base.deleteTable(table.id);
const table = await bitable.base.getActiveTable();
await bitable.base.deleteTable(table.id);
batchUploadFile
批量上传文件,按序返回每个文件对应的 fileToken 列表,支持传入 File 数组或 FileList 对象。
typescript
batchUploadFile(file: File[] | FileList): Promise<string[]>;
batchUploadFile(file: File[] | FileList): Promise<string[]>;
示例
typescript
// 文件上传限制
// file name 长度不得大于 250
// file size 不得大于 1024 * 1024 * 1024 * 2
const file = new File(['Hello, World!'], 'hello.txt', { type: 'text/plain' });
const tokens =await bitable.base.batchUploadFile([file]); // 拿到的 token 可以用于设置附件字段
console.log(tokens) // ['BcdqbMmW4ohD7ExUq9rcGtuVn8e']
// 文件上传限制
// file name 长度不得大于 250
// file size 不得大于 1024 * 1024 * 1024 * 2
const file = new File(['Hello, World!'], 'hello.txt', { type: 'text/plain' });
const tokens =await bitable.base.batchUploadFile([file]); // 拿到的 token 可以用于设置附件字段
console.log(tokens) // ['BcdqbMmW4ohD7ExUq9rcGtuVn8e']
事件
onTableAdd
监听 Table 添加事件,将返回一个取消监听函数。
typescript
onTableAdd(callback: () => void): () => void;
onTableAdd(callback: () => void): () => void;
示例
typescript
const off = bitable.base.onTableAdd((event) => {
console.log('table added')
})
const off = bitable.base.onTableAdd((event) => {
console.log('table added')
})
onTableDelete
监听 Table 删除事件,将返回一个取消监听函数。
typescript
onTableDelete(callback: () => void): () => void;
onTableDelete(callback: () => void): () => void;
示例
typescript
const off = bitable.base.onTableDelete((event) => {
console.log('table deleted')
})
const off = bitable.base.onTableDelete((event) => {
console.log('table deleted')
})
onSelectionChange
监听当前选中(数据表、单元格、视图)改变事件,将返回一个取消监听函数。
typescript
onSelectionChange(callback: () => void): () => void;
onSelectionChange(callback: () => void): () => void;
示例
typescript
const off = bitable.base.onSelectionChange((event: { data: Selection }) => {
console.log('current selection', event)
})
const off = bitable.base.onSelectionChange((event: { data: Selection }) => {
console.log('current selection', event)
})