Skip to content

Base 对象

Base 代表一个表格。你可以用两种方法来获取读写一个 base 的授权。一个是使用单个表格的 api token, 这个 token 可以在网页端直接生成。在云端环境下从 context.api_token 直接读取。

还有一个方法是使用账号名和密码来初始化一个 Account 对象,然后调用 Account 的接口来获取一个 base 对象。第一种方法更加安全一些。

获取授权

使用表格的 API Token 来获取一个 base 的访问授权。

例子
from seatable_api import Base, context

server_url = context.server_url or 'https://cloud.seatable.cn'
api_token = context.api_token or 'c3c75dca2c369849455a39f4436147639cf02b2d'

base = Base(api_token, server_url)
base.auth()

Metadata

Get metadata

例子
base.get_metadata()

返回结果

{
    'tables': [{
        '_id': '4krH',
        'name': '联系人',
        'is_header_locked': False,
        'description': 'xxxx',
        'header_settings': {
                'header_height': 'double'
        },
        'columns': [{
            'key': '0000',
            'type': 'text',
            'name': '名称',
            'editable': True,
            'width': 200,
            'resizable': True,
            'draggable': True,
            'data': None,
            'permission_type': '',
            'permitted_users': []
        }, {
            'key': 'M31F',
            'type': 'text',
            'name': '邮箱',
            'editable': True,
            'width': 200,
            'resizable': True,
            'draggable': True,
            'data': None,
            'permission_type': '',
            'permitted_users': []
        }],
        'views': [{
            '_id': '0000',
            'name': '默认视图',
            'type': 'table',
            'is_locked': False,
            'filter_conjunction': 'And',
            'filters': [],
            'sorts': [],
            'groupbys': [],
            'group_rows': [],
            'groups': [],
            'colorbys': {},
            'hidden_columns': [],
            'rows': [],
            'formula_rows': {},
            'link_rows': {},
            'summaries': {},
            'colors': {},
                'row_height': 'double'
        }]
    }],
    'version': 28,
    'scripts': [{
        'name': 'test',
        'url': '/scripts/09U9.py',
        '_id': '09U9',
        'type': 'Python'
    }],
    'settings': {
        'enable_archive': True
    },
    'description': {
        'text': 'The base records are based on the research work recently'
    }
}

Table

List tables

获取 base 中的子表

base.list_tables()

Get a table by name

通过名称获取 base 的子表

base.get_table_by_name(table_name)

其中

  • table_name: 需要获取的子表名称
例子
base.get_table_by_name('Table1')

Add table

在 base 中添加子表

base.add_table(table_name, lang='en')

其中

  • table_name: 需要添加的子表名称
  • lang:语言, 默认 en , 目前支持英文 ( en )和中文 ( zh-cn )
例子
base.add_table('项目调查表', lang='zh-cn')

Rename table

重命名一个子表

base.rename_table(table_name, new_table_name)

其中

  • table_name: 当前子表名称
  • new_table_name: 子表 的新名词
例子
base.rename_table('Table1', 'Table11')

Delete table

删除 base 中的子表

base.delete_table(table_name)

其中

  • table_name: 需要删除的子表名称
例子
base.delete_table('Table1')

Base 上的操作

Base 对象提供了操作行和列,上传下载文件等的接口,请参考文档

授权过期的处理方式

一些情况下, 我们需要把表格的读写逻辑放入到 while 或者 for 循环里面长期运行。在运行过程中授权可能会因为授权过期而导致程序中断,我们在此提供了一个异常 AuthExpiredError, 可以通过捕获该异常,来进行重新授权,参考如下

from seatable_api import Base, context
from seatable_api.exception import AuthExpiredError

server_url = context.server_url or 'https://cloud.seatable.cn'
api_token = context.api_token or 'c3c75dca2c369849455a39f4436147639cf02b2d'

base = Base(api_token, server_url)
base.auth()

while True:
    try:
        base.append_row('Table1', {"xxx":"xxx"})
        ...
    except AuthExpiredError:
       base.auth()