Skip to content

Base 对象

Base 对象提供了一些操作数据的方法

子表

getActiveTable

获取当前选中的表格, 返回一个 table 对象

例子
 const table = base.getActiveTable();
 output.markdown(`#### ${table.name}`);

getTables

获取所有的子表

例子
const tables = base.getTables();
output.text(tables.length);

getTableByName

通过一个表格的名称获取一个 table 对象

const table = base.getTableByName(tableName: String);
例子
const table = base.getTableByName('Table1');
output.text(table._id);

addTable

添加一个子表

base.addTable(tableName: String);
例子
base.addTable('New table');

renameTable

重命名一个子表

base.renameTable(oldName: String, newName: String);
例子
base.renameTable('Old name', 'New name');

deleteTable

删除一个子表

base.deleteTable(tableName: String);
例子
base.deleteTable('Old table');

视图

getActiveView

获取当前的视图,该方法返回一个 view 对象

例子
const view  = base.getActiveView();
output.text(view._id);

listViews / getViews(deprecated)

获取当前表格的所有视图,并以一个数组的形式返回所有的视图, 其中 getViews 函数已经过期, 新的代码里面可以使用 listViews。

const views = base.listViews(table_name);
例子
const views = base.listViews('Table1');
output.text(views.length);

getViewByName

通过视图的名称获取表格中的一个视图对象,并返回一个视图对象

const view = base.getViewByName(table: Object/String, viewName: String);
例子
const table  = base.getTableByName('Table1'); 
const view = base.getViewByName(table, 'view 1');
output.text(view.name);
const view = base.getViewByName('Table1', 'view 1');
output.text(view.name);

addView

一个子表中添加一个视图

base.addView(table: Object/String, viewName: String);
例子
const table  = base.getTableByName('Table1');
base.addView(table, 'view 2');
base.addView('Table1', 'view 2');

renameView

重命名一个子表中的一个视图

base.renameView(table: Object/String, currentViewName: String, nextViewName: String);
例子
const table  = base.getTableByName('Table1');
base.renameView(table, 'view1', 'view2');
base.renameView('Table1', 'view1', 'view2');

deleteView

删除一个视图

base.deleteView(table: Object/String, viewName: String);
例子
const table  = base.getTableByName('Table1');
base.deleteView(table, 'view2');
base.deleteView('Table1', 'view2');

getColumns

获取一个表格中的所有列,并以一个数组的形式返回所有的列对象

const columns = base.getColumns(table: Object/String);
例子
const table  = base.getTableByName('Table1');
const columns = base.getColumns(table);

column.forEach((column) => {
    output.text(column.name);
})
const columns = base.getColumns('Table1');

getShownColumns

获取一个视图中所有显示的列,不包含该视图中已经被隐藏的列, 返回一个数组

const columns = base.getShownColumns(table: Object/String, view: Object/String);
例子
const table  = base.getTableByName('Table1');
const view = base.getViewByName(table, 'view 1');
const columns = base.getShownColumns(table, view);
column.forEach((column) => {
    output.text(column.name);
})
const columns = base.getShownColumns('Table1', 'view 1');

listColumns

获取表格的所有的列, 通过表格名称和 视图名称获取

const columns = base.listColumns(table_name, view_name=null)
例子
const view_cols = base.listColumns('Table1', 'My_view')

getColumnByName

通过列的名称获取该列对象

const column = base.getColumnByName(table: Object/String, name: String);
例子
const column = base.getColumnByName(table, 'Column name');
output.text(column.name);
const column = base.getColumnByName('Table1', 'Column name');

getColumnsByType

获取该表格中所有特定种类的列

const columns = base.getColumnsByType(table: Object/String, type: String);
例子
const table  = base.getTableByName('Table1');
const columns = base.getColumnsByType(table, 'text');
output.text(column.length);
const columns = base.getColumnsByType('Table1', 'text');
output.text(column.length);

getRows

获取一个视图所有的行,返回一个数组

const rows = base.getRows(table_name view_name);
例子
const table = base.getTableByName('Table1');
const view = base.getViewByName(table, 'view1');
const rows = base.getRows(table, view);
const rows = base.getRows('Table1', 'view1');

getGroupedRows

获取分组视图中的行分组数据

base.getGroupedRows(table: Object/String, view: Object/String);
例子
const table = base.getTableByName('Table1');
const view = base.getViewByName(table, '分组视图');
const groupViewRows = base.getGroupedRows(table, view);
const groupViewRows = base.getGroupedRows('Table1', '分组视图');

getRow / getRowById(deprecated)

通过一个行的 id 获取行,返回一个行对象, 其中 getRowById 函数已经过期, 新的代码里面可以使用 getRow。

const row = base.getRow(table: Object/String, rowId: String);
例子
const row = base.getRow('Table1', "M_lSEOYYTeuKTaHCEOL7nw");

deleteRow / deleteRowById(deprecated)

通过一个行的 id 删除当前表格中的该行,其中 deleteRowById 函数已经过期, 新的代码里面可以使用 deleteRow。

base.deleteRow(table_name, row_id)
例子
base.deleteRow('Table1', 'U_eTV7mDSmSd-K2P535Wzw')

appendRow / addRow(deprecated)

在一个子表中添加一行, 其中 addRow 函数已经过期, 新的代码里面可以使用 appendRow。

base.appendRow(table_name, row_data)
例子
row_data = {
    "Name": "I am new Row"
}
base.appendRow('Table1', row_data)

updateRow / modifyRow(deprecated)

修改表格中的某一行, 其中 modifyRow 函数已经过期, 新的代码里面可以使用 updateRow。

base.updateRow(table_name, row_id, row_data)
例子
base.updateRow(table_name, row_id, row_data)
// example
row_data = {
    "Name": "T"
}
base.updateRow('Table1', 'U_eTV7mDSmSd-K2P535Wzw', row_data)

modifyRows

一次性修改表格中的多行

base.modifyRows(table: Object/String, rows: Array, updatedRows: Array);
例子
const table = base.getTableByName('Table1');
const rows = base.getRows('Table1', '默认视图');
const selectedColumnName = '名称';
const selectedRows = [], updatedRows = [];

rows.forEach((row) => {
  if (row[selectedColumnName] === 'name') {
    selectedRows.push(row);
    updatedRows.push({[selectedColumnName]: 'name1'});
  }
});
base.modifyRows(table, selectedRows, updatedRows);

filter

通过一个查询语句, 筛选出表格中符合条件的行, 返回一个 querySet 对象

例子

// 过滤出 number列 等于 5 的行, 返回一个 querySet 对象
const querySet = base.filter('Table1', '默认视图', 'number = 5');

getLinkedRecords

获取被链接的行的信息。可以一次查询多个行的被链接行的信息。

base.getLinkedRecords(tableId, linkColumnKey, rows)

其中

  • tableId: 子表的 id
  • linkColumnKey: 链接列的 key (非 link_id )
  • rows: 需要查找链接信息的行的列表,每一列表项包含三个参数 row_id, offset (查找的偏移量, 默认为0), limit (查找的数量, 默认为10)
例子
base.getLinkedRecords('0000', '89o4', [
  {'row_id': 'FzNqJxVUT8KrRjewBkPp8Q', 'limit': 2, 'offset': 0},
  {'row_id': 'Jmnrkn6TQdyRg1KmOM4zZg', 'limit': 20}
])

// 返回的数据结构, 包含被链接的行的 ID 和显示值。每个行所连接的行,按照被链接的行的创建时间顺序以数组形式返回。
{
  'FzNqJxVUT8KrRjewBkPp8Q': [
    {'row_id': 'LocPgVvsRm6bmnzjFDP9bA', 'display_value': '1'},                            
    {'row_id': 'OA6x7CYoRuyc2pT52Znfmw', 'display_value': '3'},
    ...
  ],
  'Jmnrkn6TQdyRg1KmOM4zZg': [
    {'row_id': 'LocPgVvsRm6bmnzjFDP9bA', 'display_value': '1'},     
    {'row_id': 'OA6x7CYoRuyc2pT52Znfmw', 'display_value': '3'},
    ...
  ]
}

添加链接,链接其他表记录

base.addLink(linkId, tableName, linkedTableName, rowId, linkedRowId)

其中

  • linkId: 链接列data属性下的 link_id
  • tableName: 链接表的名字
  • linkedTableName: 被链接表的名字
  • rowId: 链接行 id
  • linkedRowId: 被链接行的 id
例子
base.addLink('5WeC', 'real-img-files', 'contact', 'CGtoJB1oQM60RiKT-c5J-g', 'PALm2wPKTCy-jdJNv_UWaQ')

移除某个链接

base.removeLink(linkId, tableName, linkedTableName, rowId, linkedRowId)
例子
base.removeLink('5WeC', 'real-img-files', 'contact', 'CGtoJB1oQM60RiKT-c5J-g', 'PALm2wPKTCy-jdJNv_UWaQ')

getColumnLinkId

通过列名来获取链接的id

base.getColumnLinkId(table_name, column_name)
例子
base.getColumnLinkId('Table1', '记录')

移除现有的所有的行的链接, 并添加新链接

base.updateLinks(linkId, tableName, linkedTableName, rowId, updatedlinkedRowIds)
例子
const rows = base.getRows('contact', '默认视图');

// 更新行的链接为 [rows[0]._id, rows[1]._id, rows[2]._id, rows[3]._id]
base.updateLinks('5WeC', 'real-img-files', 'contact', 'CGtoJB1oQM60RiKT-c5J-g', [rows[0]._id, rows[1]._id, rows[2]._id, rows[3]._id])

query

使用 sql 语句查询一个 base

await base.query(sql)

例子

基础查询
const data = await base.query('select name, price, year from Bill')
output.text(data)

结果

[
    {"name":"Bob","price":"300","year":"2021"},
    {"name":"Bob","price":"300","year":"2019"},
    {"price":"100","year":"2019","name":"Tom"},
    {"name":"Tom","price":"100","year":"2020"},
    {"name":"Tom","price":"200","year":"2021"},
    {"name":"Jane","price":"200","year":"2020"},
    {"name":"Jane","price":"200","year":"2021"}
]
WHERE
const data = await base.query('select name, price from Bill where year = 2021')
output.text(data)

结果

[
    {"name":"Bob","price":"300"},
    {"name":"Tom","price":"200"},
    {"name":"Jane","price":"200"}
]
ORDER BY
const data = await base.query('select name, price from Bill where year = 2021')
output.text(data)

结果

[
    {"price":"300","year":2019,"name":"Bob"},
    {"price":"100","year":2019,"name":"Tom"},
    {"name":"Tom","price":"100","year":2020},
    {"price":"200","year":2020,"name":"Jane"},
    {"name":"Bob","price":"300","year":2021},
    {"name":"Tom","price":"200","year":2021},
    {"name":"Jane","price":"200","year":2021}
]
GROUP BY
const data = await base.query('select name, sum(price) from Bill group by name')
output.text(data)

结果

[
    {"name":"Bob","SUM(price)":600},
    {"SUM(price)":400,"name":"Jane"},
    {"name":"Tom","SUM(price)":400}
]
DISTINCT
const data = await base.query('select distinct name from Bill')
output.text(data)

结果

[
    {"name":"Bob"},
    {"name":"Jane"},
    {"name":"Tom"}
]