dingtalk-docs-cool-app
Version:
钉钉文档酷应用插件扩展 开发者初始化包
1,396 lines (1,395 loc) • 43.8 kB
TypeScript
export type SheetId = string;
export type FieldId = string;
export type FieldType = 'text' | 'number' | 'singleSelect' | 'multipleSelect' | 'date' | 'group' | 'checkbox' | 'user' | 'unidirectionalLink' | 'bidirectionalLink' | 'attachment' | 'department' | 'url' | 'creator' | 'lastModifier' | 'createdTime' | 'lastModifiedTime' | 'rating' | 'progress' | 'currency' | 'telephone' | 'email' | 'idCard' | 'formula' | 'lookup' | 'filterUp';
export type ViewType = 'Grid' | 'Kanban' | 'Gallery' | 'Gatt' | 'Calendar' | 'Form';
export declare enum NUMERICAL_FORMAT {
/** 整数 */
INT = "INT",
/** 保留1位小数 */
FLOAT_1 = "FLOAT_1",
/** 保留2位小数 */
FLOAT_2 = "FLOAT_2",
/** 保留3位小数 */
FLOAT_3 = "FLOAT_3",
/** 保留4位小数 */
FLOAT_4 = "FLOAT_4",
/** 保留5位小数 */
FLOAT_5 = "FLOAT_5",
/** 保留6位小数 */
FLOAT_6 = "FLOAT_6",
/** 保留7位小数 */
FLOAT_7 = "FLOAT_7",
/** 保留8位小数 */
FLOAT_8 = "FLOAT_8",
/** 保留9位小数 */
FLOAT_9 = "FLOAT_9",
/** 千分位 */
THOUSAND = "THOUSAND",
/** 千分位(小数点) */
THOUSAND_FLOAT = "THOUSAND_FLOAT",
/** 百分比 */
PERCENT = "PERCENT",
/** 百分比(小数点) */
PERCENT_FLOAT = "PERCENT_FLOAT"
}
export type NumericalFormatter = `${NUMERICAL_FORMAT}`;
export declare enum DATE_FORMAT {
FORMAT1 = "YYYY-MM-DD",
FORMAT2 = "YYYY-MM-DD HH:mm",
FORMAT3 = "YYYY/MM/DD",
FORMAT4 = "YYYY/MM/DD HH:mm",
FORMAT5 = "YYYY\u5E74MM\u6708",
FORMAT6 = "MM\u6708DD\u65E5",
FORMAT7 = "YYYY\u5E74MM\u6708DD\u65E5"
}
export type DateFormatter = `${DATE_FORMAT}`;
export declare enum PROGRESS_FORMAT {
/** 数值,整数 */
NUMBER = "NUMBER",
/** 数值,保留1位小数位 */
NUMBER_FLOAT_1 = "NUMBER_FLOAT_1",
/** 数值,保留2位小数位 */
NUMBER_FLOAT_2 = "NUMBER_FLOAT_2",
/** 数值,保留3位小数位 */
NUMBER_FLOAT_3 = "NUMBER_FLOAT_3",
/** 百分比,整数 */
PERCENT = "PERCENT",
/** 百分比,保留1位小数位 */
PERCENT_FLOAT_1 = "PERCENT_FLOAT_1",
/** 百分比,保留2位小数位 */
PERCENT_FLOAT_2 = "PERCENT_FLOAT_2",
/** 百分比,保留3位小数位 */
PERCENT_FLOAT_3 = "PERCENT_FLOAT_3"
}
export interface SelectOptions {
/** 选项Id, 新增选项时可不传此项 */
id?: string;
/** 选项名 */
name: string;
}
export declare enum RATING_ICON_TYPE {
STAR = "star",
NPS = "nps",
HEART = "heart",
LIKE = "like",
FIRE = "fire",
EMOJI = "emoji",
LIGHTING = "lighting",
FLOWER = "flower"
}
export declare enum CURRENCY_TYPE {
/** 人民币 */
CNY = "CNY",
/** 港元 */
HKD = "HKD",
/** 美元 */
USD = "USD",
/** 欧元 */
EUR = "EUR",
/** 英镑 */
GBP = "GBP",
/** 澳门元 */
MOP = "MOP",
/** 越南盾 */
VND = "VND",
/** 日元 */
JPY = "JPY",
/** 韩元 */
KRW = "KRW",
/** 阿联酋迪拉姆 */
AED = "AED",
/** 澳元 */
AUD = "AUD",
/** 巴西雷亚尔 */
BRL = "BRL",
/** 加拿大元 */
CAD = "CAD",
/** 瑞士法郎 */
CHF = "CHF",
/** 印度卢比 */
INR = "INR",
/** 印尼盾 */
IDR = "IDR",
/** 墨西哥比索 */
MXN = "MXN",
/** 马来西亚令吉 */
MYR = "MYR",
/** 菲律宾比索 */
PHP = "PHP",
/** 波兰兹罗提 */
PLN = "PLN",
/** 俄罗斯卢布 */
RUB = "RUB",
/** 新加坡元 */
SGD = "SGD",
/** 泰国铢 */
THB = "THB",
/** 土耳其里拉 */
TRY = "TRY",
/** 新台币 */
TWD = "TWD"
}
export type CurrencyType = `${CURRENCY_TYPE}`;
export interface FieldProperty {
/**
* 字段格式[数字/时间/进度/货币字段可配置]
*/
formatter?: NUMERICAL_FORMAT | DATE_FORMAT | PROGRESS_FORMAT;
/**
* 选项配置[单选/多选字段可配置]
*/
choices?: SelectOptions[];
/**
* 要关联的数据表Id[单向关联/双向关联字段可配置]
*/
linkedSheetId?: string;
/**
* 双向关联的字段Id[由系统自动生成]
*/
linkedFieldId?: string;
/**
* 是否可多选[人员/群组/部门/单向关联/双向关联字段可配置]
*/
multiple?: boolean;
/**
* 最小值[进度、评分字段可配置,评分字段下仅支持配置0或1的整数]
*/
min?: number;
/**
* 最大值[进度、评分字段可配置,评分字段下仅支持配置2~5的整数]
*/
max?: number;
/**
* 是否可自定义进度条值[进度字段可配置]
*/
customizeRange?: boolean;
/**
* 评分图标[评分字段可配置]
*/
icon?: RATING_ICON_TYPE;
/**
* 货币币种[货币字段可配置]
*/
currencyType?: CURRENCY_TYPE;
}
export declare enum FilterDuration {
/** 今天 */
Today = "Today",
/** 明天 */
Tomorrow = "Tomorrow",
/** 昨天 */
Yesterday = "Yesterday",
/** 过去7天 */
TheLastWeek = "TheLastWeek",
/** 未来7天 */
TheNextWeek = "TheNextWeek",
/** 过去30天 */
TheLastMonth = "TheLastMonth",
/** 未来30天 */
TheNextMonth = "TheNextMonth",
/** 本周 */
CurrentWeek = "CurrentWeek",
/** 上周 */
LastWeek = "LastWeek",
/** 本月 */
CurrentMonth = "CurrentMonth",
/** 上个月 */
LastMonth = "LastMonth"
}
export declare enum FilterConjunction {
And = "and",
Or = "or"
}
export declare enum FilterOperator {
/** 等于 */
Is = "is",
/** 不等于 */
IsNot = "isNot",
/** 包含 */
Contains = "contains",
/** 不包含 */
DoesNotContain = "doesNotContain",
/** 为空 */
IsEmpty = "isEmpty",
/** 不为空 */
IsNotEmpty = "isNotEmpty",
/** 大于 */
IsGreater = "isGreater",
/** 大于或等于 */
IsGreaterEqual = "isGreaterEqual",
/** 小于 */
IsLess = "isLess",
/** 小于或等于 */
IsLessEqual = "isLessEqual"
}
type IFilterDateTimeValue = number | FilterDuration | null;
type IFilterConditionValue = null | boolean | number | string | string[] | IFilterDateTimeValue;
interface IFilterCondition {
fieldId: string;
operator: FilterOperator;
value: IFilterConditionValue;
conditionId: string;
}
export interface IFilterInfo {
conjunction: FilterConjunction;
conditions: IFilterCondition[];
}
interface IFilterBaseCondition {
fieldId: string;
conditionId?: string;
}
export interface IFilterAttachmentCondition extends IFilterBaseCondition {
fieldType?: 'Attachment';
value?: null;
operator: FilterOperator.IsEmpty | FilterOperator.IsNotEmpty;
}
export interface IFilterCheckboxCondition extends IFilterBaseCondition {
value: boolean;
operator: FilterOperator.Is;
fieldType?: 'Checkbox';
}
export interface IFilterAutoNumberCondition extends IFilterBaseCondition {
value: number;
operator: FilterOperator.Is | FilterOperator.IsNot | FilterOperator.IsGreater | FilterOperator.IsGreaterEqual | FilterOperator.IsLess | FilterOperator.IsLessEqual | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty;
fieldType?: 'AutoNumber';
}
export interface IFilterDateTimeCondition extends IFilterBaseCondition {
value: IFilterDateTimeValue;
/** IsGreater:晚于; isLess:早于 */
operator: FilterOperator.Is | FilterOperator.IsGreater | FilterOperator.IsLess | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty;
fieldType?: 'DateTime';
}
export interface IFilterCreatedTimeCondition extends IFilterBaseCondition {
value: IFilterDateTimeValue;
/** IsGreater:晚于; isLess:早于 */
operator: FilterOperator.Is | FilterOperator.IsGreater | FilterOperator.IsLess | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty;
fieldType?: 'CreatedTime';
}
export interface IFilterModifiedTimeCondition extends IFilterBaseCondition {
value: IFilterDateTimeValue;
/** IsGreater:晚于; isLess:早于 */
operator: FilterOperator.Is | FilterOperator.IsGreater | FilterOperator.IsLess | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty;
fieldType?: 'ModifiedTime';
}
export interface IFilterMultipleSelectCondition extends IFilterBaseCondition {
value: string | string[];
operator: FilterOperator.Is | FilterOperator.IsNot | FilterOperator.Contains | FilterOperator.DoesNotContain | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty;
fieldType?: 'MultipleSelect';
}
export interface IFilterSingleSelectCondition extends IFilterBaseCondition {
value: string | string[];
operator: FilterOperator.Is | FilterOperator.IsNot | FilterOperator.Contains | FilterOperator.DoesNotContain | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty;
fieldType?: 'SingleSelect';
}
export interface IFilterPhoneCondition extends IFilterBaseCondition {
value: string | null;
operator: FilterOperator.Is | FilterOperator.IsNot | FilterOperator.Contains | FilterOperator.DoesNotContain | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty;
fieldType?: 'Phone';
}
export interface IFilterTextCondition extends IFilterBaseCondition {
value: string | null;
operator: FilterOperator.Is | FilterOperator.IsNot | FilterOperator.Contains | FilterOperator.DoesNotContain | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty;
fieldType?: 'Text';
}
export interface IFilterNumberCondition extends IFilterBaseCondition {
value: number | null;
operator: FilterOperator.Is | FilterOperator.IsNot | FilterOperator.IsGreater | FilterOperator.IsGreaterEqual | FilterOperator.IsLess | FilterOperator.IsLessEqual | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty;
fieldType?: 'Number';
}
export interface IFilterUrlCondition extends IFilterBaseCondition {
value: string | null;
operator: FilterOperator.Is | FilterOperator.IsNot | FilterOperator.Contains | FilterOperator.DoesNotContain | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty;
fieldType?: 'Url';
}
export interface IFilterCurrencyCondition extends IFilterBaseCondition {
value: number | null;
operator: FilterOperator.Is | FilterOperator.IsNot | FilterOperator.IsGreater | FilterOperator.IsGreaterEqual | FilterOperator.IsLess | FilterOperator.IsLessEqual | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty;
fieldType?: 'Currency';
}
export interface IFilterBarcodeCondition extends IFilterBaseCondition {
value: string | null;
operator: FilterOperator.Is | FilterOperator.IsNot | FilterOperator.Contains | FilterOperator.DoesNotContain | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty;
fieldType?: 'Barcode';
}
export interface IFilterProgressCondition extends IFilterBaseCondition {
value: number | null;
operator: FilterOperator.Is | FilterOperator.IsNot | FilterOperator.IsGreater | FilterOperator.IsGreaterEqual | FilterOperator.IsLess | FilterOperator.IsLessEqual | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty;
fieldType?: 'Progress';
}
export interface IFilterEmailCondition extends IFilterBaseCondition {
value: string | null;
operator: FilterOperator.Is | FilterOperator.IsNot | FilterOperator.Contains | FilterOperator.DoesNotContain | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty;
fieldType?: 'Email';
}
export interface IFilterRatingCondition extends IFilterBaseCondition {
value: number | null;
operator: FilterOperator.Is | FilterOperator.IsNot | FilterOperator.IsGreater | FilterOperator.IsGreaterEqual | FilterOperator.IsLess | FilterOperator.IsLessEqual | FilterOperator.IsEmpty | FilterOperator.IsNotEmpty;
fieldType?: 'Rating';
}
export type FilterInfoCondition = IFilterAttachmentCondition | IFilterCheckboxCondition | IFilterAutoNumberCondition | IFilterDateTimeCondition | IFilterCreatedTimeCondition | IFilterModifiedTimeCondition | IFilterMultipleSelectCondition | IFilterSingleSelectCondition | IFilterPhoneCondition | IFilterTextCondition | IFilterNumberCondition | IFilterUrlCondition | IFilterCurrencyCondition | IFilterBarcodeCondition | IFilterProgressCondition | IFilterEmailCondition | IFilterRatingCondition;
export type IAddFilterConditionParams = FilterInfoCondition | FilterInfoCondition[];
export type IUpdateFilterConditionParams = FilterInfoCondition | FilterInfoCondition[];
export type FieldWidths = Record<string, number>;
export interface IGridViewMeta {
id: string;
name: string;
type: 'Grid';
property: {
hierarchyConfig: {
fieldId: string | undefined;
};
filterInfo: IFilterInfo | null;
};
}
export declare enum SharingStatus {
Enabled = "Enabled",
Disabled = "Disabled"
}
export declare enum PermissionScope {
BASE = "base",
SHEET = "sheet",
VIEW = "view",
FIELD = "field",
RECORD = "record",
CELL = "cell"
}
export declare enum PermissionType {
/** 可编辑权限 */
EDIT = "edit",
/** 可管理权限 */
MANAGE = "manage",
/** 可读权限 */
READ = "read",
/** 可创建权限 */
CREATE = "create",
/** 可更新权限 */
UPDATE = "update",
/** 可删除权限 */
DELETE = "delete",
/** 可复制权限 */
COPY = "copy",
/** 可分组权限 */
GROUP = "group",
/** 可排序权限 */
SORT = "sort",
/** 可筛选权限 */
FILTER = "filter",
/** 可填色权限 */
FILL_COLOR = "fillColor"
}
interface IBasePermission {
/** 权限范围 */
scope: PermissionScope.BASE;
/** 权限类型 */
permissionType: PermissionType.EDIT | PermissionType.MANAGE;
}
interface ISheetPermission {
/** 权限范围 */
scope: PermissionScope.SHEET;
/** 权限类型 */
permissionType: PermissionType.READ | PermissionType.CREATE | PermissionType.UPDATE | PermissionType.DELETE;
params: {
/** 需要查询权限的数据表ID */
sheetId: string;
};
}
export type IGetPermission = IBasePermission | ISheetPermission;
export interface Selection {
/** 当前多维表的ID */
baseId: string;
/** 当前选中区域所属数据表ID,未选中数据表时返回null */
sheetId: SheetId | null;
/** 当前选中区域所属视图ID,未选中视图时返回null */
viewId: string | null;
/** 当前选中区域起始单元格所属字段ID,未选中单元格时返回null */
fieldId: FieldId | null;
/** 当前选中区域起始单元格所属记录ID,未选中单元格时返回null */
recordId: string | null;
/**
* 当前选中表区域的范围
*/
selectedArea: {
/**
* 当前选中区域所属字段ID
*/
fieldIds: string[] | null;
/**
* 当前选中区域所属记录ID
*/
recordIds: string[] | null;
} | null;
}
export interface FieldToInsert {
/** 字段名称 */
name: string;
/** 字段类型 */
type: FieldType;
/** 字段属性 */
property?: FieldProperty;
}
export interface FieldToUpdate {
/** 字段名称 */
name?: string;
/** 字段类型 */
type?: FieldType;
/** 字段属性 */
property?: FieldProperty;
/** 字段描述 */
desc?: string;
}
export interface SheetToUpdate {
/** 需要更新的表格名称 */
name?: string;
/** 需要更新的数据表描述 */
desc?: string;
}
export interface ViewToInsert {
/** 视图名称 */
name: string;
/** 视图类型 */
type: ViewType;
/** 视图描述 */
desc?: string;
}
export interface ViewToUpdate {
/** 视图名称 */
name?: string;
/** 视图描述 */
desc?: string;
}
export interface RecordToInsert {
/**
* 字段值,key为fieldId,value为对应的值。
*/
fields: Record<string, Cell>;
id?: string;
}
export interface Base {
/**
* getPermission
* 查询当前用户的权限
*
* @param {IGetPermission} params 多维表权限类型
* @returns {Promise<boolean>} 是否拥有此权限
*/
getPermissionAsync: (params: IGetPermission) => Promise<boolean>;
/**
* getSelection
* 获取当前多维表激活区域的信息
*
* @returns {Selection} 数据表激活区域的信息
*/
getSelection: () => Selection;
/**
* getActiveSheet
* 获取当前选中的数据表对象
*
* @returns {Sheet | null} 数据表对象,若当前未选中任何数据表,则返回null
*/
getActiveSheet: () => Sheet | null;
/**
* getSheet
* 根据数据表ID或数据表名称获取指定数据表
*
* @param {string} idOrName 数据表ID或数据表名称
* @returns {Sheet | null} 数据表对象,若当前未找到符合条件的数据表,则返回null
*/
getSheet: (idOrName: string) => Sheet | null;
/**
* getSheets
* 获取当前用户可见的所有数据表
*
* @returns {Sheet[]} 当前用户可见的所有数据表对象
*/
getSheets: () => Sheet[];
/**
* insertSheet
* 插入一张数据表
*
* @param {string} name 数据表名称
* @param {FieldToInsert} fields 数据表携带的字段配置,不传时会携带默认空数据表模版的字段(标题/单选/人员/日期/附件)
* @returns {Sheet} 插入的数据表对象
*/
insertSheet: (name: string, fields?: FieldToInsert[]) => Sheet;
/**
* updateSheet
* 根据数据表ID更新指定数据表
*
* @param {string} id 指定数据表ID
* @param {SheetToUpdate} sheet 需要更新的数据表配置
* @returns {Sheet} 更新的数据表对象
*/
updateSheet: (id: string, sheet: SheetToUpdate) => Sheet;
/**
* deleteSheet
* 根据数据表ID或数据表名称删除指定数据表
*
* @param {string} idOrName 数据表ID或数据表名称
* @returns {Base} Base对象本身
*/
deleteSheet: (idOrName: string) => Base;
/**
* getDentryUuid[skip-for-cool-app]
* 获取文档dentryUuid
*/
getDentryUuid: () => string;
}
export interface Sheet {
/**
* getId
* 获取当前数据表ID
*
* @returns {string} 数据表ID
*/
getId: () => string;
/**
* getName
* 获取当前数据表名称
*
* @returns {string} 数据表名称
*/
getName: () => string;
/**
* setName
* 设置当前数据表名称
*
* @param {string} name 数据表名称
* @returns {Sheet} Sheet对象本身
*/
setName: (name: string) => Sheet;
/**
* getDesc
* 获取数据表描述
*
* @returns {string | undefined} 数据表描述文案,没有描述时默认返回undefined
*/
getDesc: () => string | undefined;
/**
* setDesc
* 设置当前数据表描述
*
* @param {string} desc 数据表描述文案
* @returns {Sheet} Sheet对象本身
*/
setDesc: (desc: string) => Sheet;
/**
* isFieldExist
* 判断当前数据表中指定ID的字段是否存在
*
* @param {string} fieldId 字段ID
* @returns {boolean} 是否存在
*/
isFieldExist: (fieldId: string) => boolean;
/**
* getFields
* 获取当前数据表中所有字段列表
*
* @returns {Field[]} 字段列表
*/
getFields: () => Field[];
/**
* getFieldsByType
* 获取当前数据表中所有指定类型的字段列表
*
* @param {T = FieldType} type 指定字段类型
* @returns {Field<T>[]} 指定类型的字段列表
*/
getFieldsByType: (type: FieldType) => Field[];
/**
* getField
* 根据字段ID或字段名称获取指定字段
*
* @param {string} idOrName 字段ID或字段名称
* @returns {Field | null} 字段对象,若当前未找到符合条件的数据表,则返回null
*/
getField: <T extends Field = Field>(idOrName: string) => T | null;
/**
* insertField
* 插入字段
*
* @param {Field} fieldConfig 字段配置
* @returns {Field} 插入的字段对象
*/
insertField: (fieldConfig: FieldToInsert) => Field;
/**
* updateFieldAsync
* 根据字段ID更新指定字段配置
*
* @param {string} id 字段ID
* @param {FieldToUpdate} fieldConfig 字段配置
* @returns {Field} 更新的字段对象
*/
updateFieldAsync: (id: string, fieldConfig: FieldToUpdate) => Promise<Field>;
/**
* deleteField
* 根据字段ID或字段名称删除指定字段
*
* @param idOrName 字段ID或字段名称
* @returns {Sheet} Sheet对象本身
*/
deleteField: (idOrName: string) => Sheet;
/**
* isViewExist
* 判断当前数据表中指定ID的视图是否存在
*
* @param {string} viewId 视图ID
* @returns {boolean} 是否存在
*/
isViewExist: (viewId: string) => boolean;
/**
* getViews
* 获取当前数据表的所有视图列表
*
* @returns {View[]} 视图列表
*/
getViews: () => View[];
/**
* getViewById
* 根据视图ID或视图名称获取指定视图
*
* @param {string} idOrName 指定视图的ID或名称
* @returns {View} 指定的视图对象,未找到视图时返回null
*/
getView: (idOrName: string) => View | null;
/**
* getActiveView
* 获取当前数据表激活的视图
*
* @returns {View} 激活的视图,未选中当前数据表时返回null
*/
getActiveView: () => View | null;
/**
* insertView
* 插入视图
*
* @param {ViewToInsert} view 视图配置
* @returns {View} 插入的视图对象
*/
insertView: (view: ViewToInsert) => View;
/**
* updateView
* 根据视图ID更新指定视图
*
* @param {string} id 视图ID
* @param {ViewToUpdate} view 视图配置
* @returns {View} 更新的视图对象
*/
updateView: (id: string, view: ViewToUpdate) => View;
/**
* deleteView
* 根据视图ID或视图名称删除指定视图
*
* @param {string} idOrName 视图ID或视图名称
* @returns {Sheet} Sheet对象本身
*/
deleteView: (idOrName: string) => Sheet;
/**
* 分片加载数据表记录
* @return {IGetRecordsResult} 分片加载结果
*/
getRecordsAsync: (options: IGetRecordsOptions) => Promise<IGetRecordsResult>;
/**
* getRecordAsync
* 获取指定ID的行记录
*
* @param {string} recordId 指定的行记录ID
* @returns {Promise<SheetRecord | null>} 指定ID的行记录,未找到记录时返回null
*/
getRecordAsync: (recordId: string) => Promise<SheetRecord | null>;
/**
* 批量更新数据表记录,(一次最多更新100条记录)
* @param {RecordToUpdate[]} records 需要更新的记录列表
*/
updateRecordsAsync: (records: RecordToUpdate[]) => Promise<void>;
/**
* deleteRecordsAsync
* 批量删除行记录
*
* @param {string[]} recordIds 指定的行记录ID列表
* @returns {string[]} 被删除的行记录ID列表
*/
deleteRecordsAsync: (recordIds: string[]) => Promise<string[]>;
/**
* 插入新行记录
* @param {RecordToInsert[]} records 需要插入的记录列表
* @return {Promise<SheetRecord[]>} 插入的行记录列表
*/
insertRecordsAsync: (records: RecordToInsert[]) => Promise<SheetRecord[]>;
}
export interface Field<T extends FieldType = FieldType> {
/**
* getType
* 获取当前字段类型
*
* @returns {T extends FieldType} 字段类型
*/
getType: () => T;
/**
* getSheetId
* 获取当前字段所属的数据表ID
*
* @returns {string} 数据表ID
*/
getSheetId: () => string;
/**
* getId
* 获取当前字段ID
*
* @returns {string} 字段ID
*/
getId: () => string;
/**
* getName
* 获取字段名称
*
* @returns {string} 字段名称
*/
getName: () => string;
/**
* getFieldValues
* 获取整列字段值
*
* @param {string} viewId 可选项,支持传入某个视图ID,根据视图获取字段值
* @returns {Promise<Record<string, unknown>>} 字段值
*/
getFieldValues: (viewId?: string) => Promise<Record<string, Cell<T> | null>>;
}
export interface View {
/**
* 获取当前视图ID
*/
getId: () => string;
/**
* 转为表格视图
* @returns {GridView | null} 返回表格视图对象,如果当前视图不是表格视图则返回null
*/
asGridView: () => GridView | null;
}
export interface GridView {
/**
* 获取视图对应的的数据表id
*
* @returns {string} 数据表ID
*/
sheetId: string;
/**
* 获取视图名称
* @returns {string} 视图名称
*/
getName: () => string;
/**
* 获取视图类型
* @returns {'Grid'} 视图类型,总是返回 'Grid'
*/
getType: () => 'Grid';
/**
* 获取表格视图元信息
* @returns {IGridViewMeta} 包含视图ID、名称、类型和属性的元信息对象
*/
getMeta: () => IGridViewMeta;
/**
* 获取可见字段的 ID 列表
* @returns {string[]} 可见字段ID数组
*/
getVisibleFieldIdList: () => string[];
/**
* 获取可见记录的 ID 列表
* @returns {Promise<string[]>} 可见记录ID数组
*/
getVisibleRecordIdListAsync: () => Promise<string[]>;
/**
* 获取当前的筛选信息
* @returns {IFilterInfo | null} 筛选信息对象,如果没有筛选条件则返回 null
*/
getFilterInfo: () => IFilterInfo | null;
/**
* 新增筛选条件
* 注意:调用该 API 时,并不会保存修改的设置,如果需要保存则需要额外调用 view.applySetting()
* @param {IAddFilterConditionParams} param 筛选条件参数,可以是单个条件或条件数组
* @returns {boolean} 是否新增成功
*/
addFilterCondition: (param: IAddFilterConditionParams) => boolean;
/**
* 删除筛选条件
* 注意:调用该 API 时,并不会保存修改的设置,如果需要保存则需要额外调用 view.applySetting()
* @param {string} conditionId 要删除的筛选条件ID(格式:fieldId_index)
* @returns {boolean} 是否删除成功
*/
deleteFilterCondition: (conditionId: string) => boolean;
/**
* 更新筛选条件
* 注意:调用该 API 时,并不会保存修改的设置,如果需要保存则需要额外调用 view.applySetting()
* @param {IUpdateFilterConditionParams} param 更新参数,可以是单个条件或条件数组,需要包含 conditionId 来标识要更新的条件
* @returns {boolean} 是否更新成功
*/
updateFilterCondition: (param: IUpdateFilterConditionParams) => boolean;
/**
* 设置筛选条件之间的关系
* 注意:调用该 API 时,并不会保存修改的设置,如果需要保存则需要额外调用 view.applySetting()
* @param {FilterConjunction} conjunction 筛选条件连接方式,'and' 表示满足所有条件,'or' 表示满足任一条件
* @returns {boolean} 是否设置成功
*/
setFilterConjunction: (conjunction: FilterConjunction) => boolean;
/**
* 将设置的分组/筛选/排序等视图配置提交,同步给其他用户
* @returns {void}
*/
applySetting: () => void;
/**
* 显示字段
* @param {string | string[]} fieldId 要显示的字段ID,可以是单个字段ID或字段ID数组
* @returns {boolean} 是否操作成功
*/
showField: (fieldId: string | string[]) => boolean;
/**
* 隐藏字段
* @param {string | string[]} fieldId 要隐藏的字段ID,可以是单个字段ID或字段ID数组
* @returns {boolean} 是否操作成功
*/
hideField: (fieldId: string | string[]) => boolean;
/**
* 获取字段宽度
* @param {string} fieldId 字段ID
* @returns {number} 字段宽度(像素)
*/
getFieldWidth: (fieldId: string) => number;
/**
* 设置字段宽度
* @param {string} fieldId 字段ID
* @param {number} width 字段宽度(像素),必须在最小宽度和最大宽度之间
* @returns {boolean} 是否设置成功
*/
setFieldWidth: (fieldId: string, width: number) => boolean;
/**
* 获取所有字段的宽度映射
* @returns {FieldWidths} 字段名到宽度的映射对象
*/
getFieldWidths: () => FieldWidths;
/**
* 批量设置字段宽度
* @param {FieldWidths} fieldWidths 字段名到宽度的映射对象
* @returns {GridView} 返回当前实例以支持链式调用
*/
setFieldWidths: (fieldWidths: FieldWidths) => GridView;
}
export interface SheetRecord {
/**
* getSheetId
* 获取记录所在的数据表id
*
* @returns {string} 记录所在数据表的ID
*/
getSheetId: () => string;
/**
* 获取记录id
* getId
*
* @returns {string} 记录ID
*/
getId: () => string;
/**
* getLastModifiedTime
* 获取记录最后更新时间
*
* @returns {number} 最后更新时间(毫秒级UNIX时间戳)
*/
getLastModifiedTime: () => number;
/**
* getCreatedTime
* 获取记录创建时间
*
* @returns {number} 创建时间(毫秒级UNIX时间戳)
*/
getCreatedTime: () => number;
/**
* getCellValue
* 获取指定字段的单元格值
*
* @param {string} fieldIdOrName 指定字段ID或字段名称
* @returns {Cell | null} 返回指定单元格值
*/
getCellValue: (fieldIdOrName: string) => Cell | null;
/**
* getCellValue
* 获所有单元格值
*
* @returns {Record<string, Cell>} 返回指定单元格值
*/
getCellValues: () => Record<string, Cell>;
}
export interface IOpenUrl {
text?: string;
link: string;
}
export interface IOpenSingleSelect {
/** 选项ID */
id: string;
/** 选项名 */
name: string;
}
export type IOpenMultipleSelect = IOpenSingleSelect[];
export type IOpenAttachment = Array<{
type: string;
filename: string;
url: string;
size?: number;
resourceId?: string;
}>;
export type IOpenTimestamp = number;
export interface IOpenLink {
linkedRecordIds: string[];
}
export type IOpenFormulaCellValue = Cell | Cell[];
interface CellMapBase {
text: string;
number: number;
singleSelect: IOpenSingleSelect;
multipleSelect: IOpenMultipleSelect;
url: IOpenUrl;
attachment: IOpenAttachment;
currency: number;
date: IOpenTimestamp;
unidirectionalLink: IOpenLink;
bidirectionalLink: IOpenLink;
primaryDoc: string;
}
type CellMap = {
[K in FieldType]: K extends keyof CellMapBase ? CellMapBase[K] : null;
};
export type Cell<T extends FieldType = FieldType> = CellMap[T];
export interface IGetRecordsOptions {
pageSize?: number;
cursor?: string;
/** 指定要加载的行记录ID */
recordIds?: string[];
/** 指定的视图ID */
viewId?: string;
}
export interface IGetRecordsResult {
hasMore: boolean;
cursor?: string;
total: number;
records: SheetRecord[];
}
export interface RecordToUpdate {
id: string;
/**
* 更新字段值
* key - 字段id或字段名称
*/
fields: {
[key: string]: string | number;
};
}
export interface TextField extends Field {
/**
* 获取指定记录的文本字段值
* @param recordId 记录ID
* @returns 字段值或null
*/
getValueAsync: (recordId: string) => Promise<string | null>;
/**
* 设置指定记录的文本字段值
* @param recordId 记录ID
* @param text 要设置的文本
* @returns 是否设置成功
*/
setValueAsync: (recordId: string, text: string) => Promise<boolean>;
}
export interface NumberField extends Field {
/**
* 获取指定记录的数字字段值
* @param recordId 记录ID
* @returns 字段值或null
*/
getValueAsync: (recordId: string) => Promise<number | null>;
/**
* 设置指定记录的数字字段值
* @param recordId 记录ID
* @param num 要设置的数值
* @returns 是否设置成功
*/
setValueAsync: (recordId: string, num: number) => Promise<boolean>;
/**
* 设置数字字段的格式化类型
* @param formatter 格式化类型
* @returns 字段ID
*/
setFormatter: (formatter: NumericalFormatter) => string;
/**
* 获取当前数字字段的格式化类型
* @returns 当前格式化类型
*/
getFormatter: () => NumericalFormatter;
}
/**
* 单选/多选字段的选项结构
*/
export interface ISelectFieldOption {
/** 选项ID */
id: string;
/** 选项名称 */
name: string;
/** 选项颜色(可选) */
color?: string;
}
/**
* 选项配置
*/
export type IOptionConfig = {
/** 选项名称 */
name?: string;
};
export interface SingleSelectField extends Field {
/**
* 新增一个选项
* @param name 选项名称
* @param color 选项颜色(可选)
* @returns 字段ID
*/
addOption: (name: string, color?: number) => string;
/**
* 批量新增选项
* @param optionList 选项列表
* @returns 字段ID
*/
addOptions: (optionList: {
name: string;
color?: number;
}[]) => string;
/**
* 获取所有选项
* @returns 选项数组
*/
getOptions: () => ISelectFieldOption[];
/**
* 删除指定选项
* @param idOrName 选项ID或名称
* @returns 字段ID
*/
deleteOptionAsync: (idOrName: string) => Promise<string>;
/**
* 更新指定选项配置
* @param nameOrId 选项名称或ID
* @param config 选项配置
* @returns 字段ID
*/
setOptionAsync: (nameOrId: string, config: IOptionConfig) => Promise<string>;
/**
* 获取指定记录的选项值
* @param recordId 记录ID
* @returns 选项对象或null
*/
getValueAsync: (recordId: string) => Promise<IOpenSingleSelect | null>;
/**
* 设置指定记录的选项值
* @param recordId 记录ID
* @param optionId 选项ID
* @returns 是否设置成功
*/
setValueAsync: (recordId: string, optionId: string) => Promise<boolean>;
}
export interface MultipleSelectField extends Field {
/**
* 新增一个选项
* @param name 选项名称
* @param color 选项颜色(可选)
* @returns 字段ID
*/
addOption: (name: string, color?: number) => string;
/**
* 批量新增选项
* @param optionList 选项列表
* @returns 字段ID
*/
addOptions: (optionList: {
name: string;
color?: number;
}[]) => string;
/**
* 获取所有选项
* @returns 选项数组
*/
getOptions: () => ISelectFieldOption[];
/**
* 删除指定选项
* @param idOrName 选项ID或名称
* @returns 字段ID
*/
deleteOptionAsync: (idOrName: string) => Promise<string>;
/**
* 更新指定选项配置
* @param nameOrId 选项名称或ID
* @param config 选项配置
* @returns 字段ID
*/
setOptionAsync: (nameOrId: string, config: IOptionConfig) => Promise<string>;
/**
* 获取指定记录的选项值
* @param recordId 记录ID
* @returns 选项对象数组
*/
getValueAsync: (recordId: string) => Promise<IOpenMultipleSelect>;
/**
* 设置指定记录的选项值
* @param recordId 记录ID
* @param optionId 选项ID 或 选项ID数组
* @returns 是否设置成功
*/
setValueAsync: (recordId: string, optionId: string | string[]) => Promise<boolean>;
}
export interface UrlField extends Field {
/**
* 获取指定记录的链接字段值
* @param recordId 记录ID
* @returns 链接对象或null
*/
getValueAsync: (recordId: string) => Promise<IOpenUrl | null>;
/**
* 设置指定记录的链接字段值
* @param recordId 记录ID
* @param url 链接对象或链接地址字符串
* @returns 是否设置成功
*/
setValueAsync: (recordId: string, url: IOpenUrl | string) => Promise<boolean>;
}
export interface DateField extends Field {
/**
* 获取指定记录的日期字段值
* @param recordId 记录ID
* @returns 时间戳或null
*/
getValueAsync: (recordId: string) => Promise<IOpenTimestamp | null>;
/**
* 设置指定记录的日期字段值
* @param recordId 记录ID
* @param timestamp 时间戳
* @returns 是否设置成功
*/
setValueAsync: (recordId: string, timestamp: IOpenTimestamp) => Promise<boolean>;
/**
* 获取当前日期字段的格式化类型
* @returns 当前格式化类型
*/
getDateFormat: () => DateFormatter;
/**
* 设置日期字段的格式化类型
* @param format 格式化类型
* @returns 字段ID
*/
setDateFormat: (format: DateFormatter) => string;
}
export interface CurrencyField extends Field {
/**
* 获取指定记录的货币字段值
* @param recordId 记录ID
* @returns 字段值或null
*/
getValueAsync: (recordId: string) => Promise<number | null>;
/**
* 设置指定记录的货币字段值
* @param recordId 记录ID
* @param value 金额(数字或字符串)
* @returns 是否设置成功
*/
setValueAsync: (recordId: string, value: number | string) => Promise<boolean>;
/**
* 设置货币字段的小数位数
* @param decimalDigits 小数位数
* @returns 字段ID
*/
setDecimalDigits: (decimalDigits: number) => string;
/**
* 获取货币字段的小数位数
* @returns 小数位数
*/
getDecimalDigits: () => number;
/**
* 设置货币字段的币种类型
* @param currencyType 币种类型
* @returns 字段ID
*/
setCurrencyType: (currencyType: CurrencyType) => string;
/**
* 获取货币字段的币种类型
* @returns 币种类型
*/
getCurrencyType: () => CurrencyType;
}
export interface IOpenAttachmentFile {
/** 文件名 */
name: string;
/** 文件类型 */
type: string;
/** 文件大小(字节) */
size: number;
/** 文件内容,可以是base64字符串或ArrayBuffer */
content: string | ArrayBuffer;
}
export interface AttachmentField extends Field {
/**
* 设置指定记录的附件字段值
* @param recordId 记录ID
* @param attachment 附件对象或附件对象数组
* @returns 是否设置成功
*/
setValueAsync: (recordId: string, attachment: IOpenAttachmentFile | IOpenAttachmentFile[] | IOpenAttachment | IOpenAttachment[]) => Promise<boolean>;
/**
* 获取指定记录的附件字段值
* @param recordId 记录ID
* @returns 附件对象数组或null
*/
getValueAsync: (recordId: string) => Promise<IOpenAttachment[] | null>;
/**
* 获取指定记录的附件字段值
* @param recordId 记录ID
* @returns 附件对象数组或null
*/
getAttachmentUrls: (recordId: string) => Promise<string[]>;
/**
* 获取指定记录的附件详情
* @param recordId 记录ID
* @returns 附件详情数组
*/
getAttachmentDetails: (recordId: string) => Promise<Array<{
filename: string;
type: string;
url: string;
}>>;
}
/**
* 主文档字段接口
*/
export interface PrimaryDocField extends Field {
/**
* 获取指定记录的主文档字段值
* @param recordId 记录ID
* @returns 文本类型的单元格值或null
*/
getValueAsync: (recordId: string) => Promise<string | null>;
/**
* 设置指定记录的主文档字段值
* @param recordId 记录ID
* @param text 要设置的文本内容
* @returns 是否设置成功
*/
setValueAsync: (recordId: string, text: string) => Promise<boolean>;
}
/**
* 单向关联字段接口
*/
export interface UnidirectionalLinkField extends Field {
/**
* 获取指定记录的单向关联字段值
* @param recordId 记录ID
* @returns 关联链接值或null
*/
getValueAsync: (recordId: string) => Promise<IOpenLink | null>;
/**
* 设置指定记录的单向关联字段值
* @param recordId 记录ID
* @param value 要设置的关联链接值
* @returns 是否设置成功
*/
setValueAsync: (recordId: string, value: IOpenLink) => Promise<boolean>;
/**
* 设置关联的数据表ID
* @param sheetId 关联的数据表ID
* @returns 字段ID
*/
setLinkedSheetId: (sheetId: string) => string;
/**
* 获取关联的数据表ID
* @returns 关联的数据表ID
*/
getLinkedSheetId: () => string;
/**
* 设置是否允许多选
* @param multiple 是否允许多选
* @returns 字段ID
*/
setMultiple: (multiple: boolean) => string;
/**
* 获取是否允许多选
* @returns 是否允许多选
*/
getMultiple: () => boolean;
}
/**
* 双向关联字段接口
*/
export interface BidirectionalLinkField extends Field {
/**
* 获取指定记录的双向关联字段值
* @param recordId 记录ID
* @returns 关联链接值或null
*/
getValueAsync: (recordId: string) => Promise<IOpenLink | null>;
/**
* 设置指定记录的双向关联字段值
* @param recordId 记录ID
* @param value 要设置的关联链接值
* @returns 是否设置成功
*/
setValueAsync: (recordId: string, value: IOpenLink) => Promise<boolean>;
/**
* 设置关联的数据表ID
* @param sheetId 关联的数据表ID
* @returns 字段ID
*/
setLinkedSheetId: (sheetId: string) => string;
/**
* 获取关联的数据表ID
* @returns 关联的数据表ID
*/
getLinkedSheetId: () => string;
/**
* 设置是否允许多选
* @param multiple 是否允许多选
* @returns 字段ID
*/
setMultiple: (multiple: boolean) => string;
/**
* 获取是否允许多选
* @returns 是否允许多选
*/
getMultiple: () => boolean;
}
/**
* 公式字段接口
*/
export interface FormulaField extends Field {
/**
* 获取指定记录的公式字段值
* @param recordId 记录ID
* @returns 公式字段值或null
*/
getValueAsync: (recordId: string) => Promise<IOpenFormulaCellValue | null>;
}
/**
* 关联引用接口
*/
export interface LookupField extends Field {
/**
* 获取指定记录的关联引用字段值
* @param recordId 记录ID
* @returns 关联引用字段值或null
*/
getValueAsync: (recordId: string) => Promise<IOpenFormulaCellValue | null>;
}
/**
* 查找引用字段接口
*/
export interface FilterUpField extends Field {
/**
* 获取指定记录的查找引用字段值
* @param recordId 记录ID
* @returns 查找引用字段值或null
*/
getValueAsync: (recordId: string) => Promise<IOpenFormulaCellValue | null>;
}
/**
* 操作符映射表,将外部API操作符映射为内部Filter操作符
*/
export declare const OPERATOR_MAP: Record<FilterOperator, string>;
export {};