Welcome to the SeaTable Developer's Repository! 🌊🔍✨
This repository serves as the foundational source for the SeaTable Developer's Manual available at https://developer.seatable.com. The Developer Manual is generated with the help of MkDocs Material and is a comprehensive guide and resource hub for developers aiming to build extensions, scripts, plugins, or custom applications within SeaTable.
- Introducion: Explanation of fundamental approaches and SeaTable basic concepts.
- Scripting in SeaTable: Detailed instructions on scripting with a complete function overview and ready-to-use scripts.
- Plugin Development: Step-by-step guide to developing your own SeaTable plugin.
- Client APIs: List of ready-to-use API clients for various programming languages like JavaScript, Python, and PHP.
Please fell free to participate in the Developer Manual by creating pull requests. Before you do this, please test your changes in a local copy of this manual. Here is how you can do this.
⚠️ Docker is requiredWe use Docker to create this local manual copy. You have to install docker first, if you don't have it already on your local machine. Use this one line command to easily install it on a linux machine:
curl -fsSL get.docker.com | bash
git clone https://github.com/seatable/seatable-developer-docs
cd seatable-developer-docs
git checkout -b <new_branch>
# please replace <new_branch> with something short like "add_python_example"We developed a tiny bash script to generate the local copy of the manual.
sudo ./preview.shInitiate your browser and access http://127.0.0.1:8000 to view a local copy of the manual. Any modifications made locally will be instantly reflected in this version. You don't even have to restart docker or reload the page.
The manual can be found within the docs folder. For comprehensive guidance on utilizing MKDocs or MkDocs Material, refer to their respective manuals for detailed instructions.
The last step is to create a pull request will your proposed changes.
git add .
git commit -m "<commit_message>"
git push./preview.sh -stopRead this before touching docs/javascript/. These pages document two different APIs that both call their object base, and they are not identical:
- Script in SeaTable — runs in the browser, no authentication.
baseis provided by the script environment. - External client —
npm install seatable-api, runs in Node.js or a frontend app, authenticates with an API token.
Most methods exist in both, but not all. The differences are not obvious and have caused documented methods to be undefined for readers in the wrong context. Two kinds of divergence exist:
Capability — columns can only be created or modified from the external client. insertColumn, renameColumn, modifyColumnType, addColumnOptions, deleteColumn and the other write methods do not exist in a script. Scripts have read-only access to columns.
Naming — the same method has different names in the two contexts:
| Script in SeaTable | External client |
|---|---|
getRows |
listRows |
updateLinks |
updateLink |
getColumns |
listColumns (works in both) |
Every method that is limited to one context carries a marker in its !!! abstract heading:
!!! abstract "getShownColumns :material-tag-outline:{ title='Scripting only' }"
!!! abstract "insertColumn :material-package-variant-closed:{ title='External client only' }"The markers are the authoritative per-method record. When you add or move a method, determine its context first and mark it — do not assume parity. A missing marker is read as "works in both".
The external client is machine-readable:
npm pack seatable-api && tar xzf seatable-api-*.tgz
grep -oE 'key: "[a-zA-Z0-9_]+"' package/lib/base.js | sed 's/key: //' | tr -d '"' | sort -uThe scripting API is not — it lives in the SeaTable frontend, not in a published package. Run scripts/dump-script-api.js in any base's script editor to get its current method list.
Note that dtable-sdk on npm is not a reliable stand-in for the scripting API. The script environment wraps it and adds methods; the SDK contains no link methods at all, for example.
Feel free to raise issues or reach out with any questions, feedback, or suggestions. We're here to support your SeaTable development endeavors! We welcome contributions and feedback from the SeaTable developer community.