diff --git a/.gitignore b/.gitignore index a7fb21ca..cbf21cc5 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ /images/_scratch/ /images/_tmp/ /images/_preview/ +AGENTS.md \ No newline at end of file diff --git a/en/about.mdx b/archive/en/about.mdx similarity index 100% rename from en/about.mdx rename to archive/en/about.mdx diff --git a/en/basic/automation/action.mdx b/archive/en/basic/automation/action.mdx similarity index 100% rename from en/basic/automation/action.mdx rename to archive/en/basic/automation/action.mdx diff --git a/en/basic/automation/actions/communication/send-email.mdx b/archive/en/basic/automation/actions/communication/send-email.mdx similarity index 98% rename from en/basic/automation/actions/communication/send-email.mdx rename to archive/en/basic/automation/actions/communication/send-email.mdx index c9dcf0eb..22040e94 100644 --- a/en/basic/automation/actions/communication/send-email.mdx +++ b/archive/en/basic/automation/actions/communication/send-email.mdx @@ -91,5 +91,5 @@ You can mix Markdown and dynamic variables in the same body. For complex email d ## Related - [Set up SMTP and sender](/en/basic/automation/actions/communication/smtp-sender) — send emails from your own domain -- [Loop (batch)](../logic/loop-run) — send emails in bulk by looping through a list of records +- Loop (batch) — send emails in bulk by looping through a list of records - [AI generate](/en/basic/automation/actions/ai/ai-generate) — generate personalized email content with AI diff --git a/en/basic/automation/ai-action.mdx b/archive/en/basic/automation/ai-action.mdx similarity index 100% rename from en/basic/automation/ai-action.mdx rename to archive/en/basic/automation/ai-action.mdx diff --git a/en/basic/automation/ai-script.mdx b/archive/en/basic/automation/ai-script.mdx similarity index 100% rename from en/basic/automation/ai-script.mdx rename to archive/en/basic/automation/ai-script.mdx diff --git a/en/basic/automation/ai/scripting/sample-scripts.mdx b/archive/en/basic/automation/ai/scripting/sample-scripts.mdx similarity index 98% rename from en/basic/automation/ai/scripting/sample-scripts.mdx rename to archive/en/basic/automation/ai/scripting/sample-scripts.mdx index 2000a5f1..51e47230 100644 --- a/en/basic/automation/ai/scripting/sample-scripts.mdx +++ b/archive/en/basic/automation/ai/scripting/sample-scripts.mdx @@ -340,6 +340,6 @@ output.set("recordCount", records.length); ## Related -- [Run script guide](/en/basic/automation/ai/scripting/ai-script-guide) — full reference for the scripting environment +- Run script guide — full reference for the scripting environment - [HTTP request](/en/basic/automation/actions/logic/http-request) — for simple API calls without scripting -- [Loop (batch)](/en/basic/automation/actions/logic/loop-run) — for iterating without code +- Loop (batch) — for iterating without code diff --git a/en/basic/automation/example.mdx b/archive/en/basic/automation/example.mdx similarity index 100% rename from en/basic/automation/example.mdx rename to archive/en/basic/automation/example.mdx diff --git a/en/basic/automation/logic.mdx b/archive/en/basic/automation/logic.mdx similarity index 100% rename from en/basic/automation/logic.mdx rename to archive/en/basic/automation/logic.mdx diff --git a/en/basic/automation/trigger.mdx b/archive/en/basic/automation/trigger.mdx similarity index 100% rename from en/basic/automation/trigger.mdx rename to archive/en/basic/automation/trigger.mdx diff --git a/en/basic/field/ai/ai-field-practical-guide.mdx b/archive/en/basic/field/ai/ai-field-practical-guide.mdx similarity index 100% rename from en/basic/field/ai/ai-field-practical-guide.mdx rename to archive/en/basic/field/ai/ai-field-practical-guide.mdx diff --git a/en/basic/organization/organization.mdx b/archive/en/basic/organization/organization.mdx similarity index 100% rename from en/basic/organization/organization.mdx rename to archive/en/basic/organization/organization.mdx diff --git a/en/basic/organization/security.mdx b/archive/en/basic/organization/security.mdx similarity index 100% rename from en/basic/organization/security.mdx rename to archive/en/basic/organization/security.mdx diff --git a/en/basic/organization/setting.mdx b/archive/en/basic/organization/setting.mdx similarity index 100% rename from en/basic/organization/setting.mdx rename to archive/en/basic/organization/setting.mdx diff --git a/en/basic/organization/sso.mdx b/archive/en/basic/organization/sso.mdx similarity index 100% rename from en/basic/organization/sso.mdx rename to archive/en/basic/organization/sso.mdx diff --git a/en/basic/organization/user.mdx b/archive/en/basic/organization/user.mdx similarity index 100% rename from en/basic/organization/user.mdx rename to archive/en/basic/organization/user.mdx diff --git a/zh/about.mdx b/archive/zh/about.mdx similarity index 100% rename from zh/about.mdx rename to archive/zh/about.mdx diff --git a/zh/basic/automation/action.mdx b/archive/zh/basic/automation/action.mdx similarity index 100% rename from zh/basic/automation/action.mdx rename to archive/zh/basic/automation/action.mdx diff --git a/zh/basic/automation/actions/communication/send-email.mdx b/archive/zh/basic/automation/actions/communication/send-email.mdx similarity index 98% rename from zh/basic/automation/actions/communication/send-email.mdx rename to archive/zh/basic/automation/actions/communication/send-email.mdx index 009748df..83c89b60 100644 --- a/zh/basic/automation/actions/communication/send-email.mdx +++ b/archive/zh/basic/automation/actions/communication/send-email.mdx @@ -91,5 +91,5 @@ description: "在工作流中发送自定义邮件" ## 相关文档 - [配置 SMTP 和发件人](/zh/basic/automation/actions/communication/smtp-sender) — 从您自己的域名发送邮件 -- [循环执行](../logic/loop-run) — 遍历记录列表批量发送邮件 +- 循环执行 — 遍历记录列表批量发送邮件 - [AI 生成](/zh/basic/automation/actions/ai/ai-generate) — 使用 AI 生成个性化邮件内容 diff --git a/zh/basic/automation/ai-action.mdx b/archive/zh/basic/automation/ai-action.mdx similarity index 100% rename from zh/basic/automation/ai-action.mdx rename to archive/zh/basic/automation/ai-action.mdx diff --git a/zh/basic/automation/ai-script.mdx b/archive/zh/basic/automation/ai-script.mdx similarity index 100% rename from zh/basic/automation/ai-script.mdx rename to archive/zh/basic/automation/ai-script.mdx diff --git a/zh/basic/automation/ai/scripting/sample-scripts.mdx b/archive/zh/basic/automation/ai/scripting/sample-scripts.mdx similarity index 98% rename from zh/basic/automation/ai/scripting/sample-scripts.mdx rename to archive/zh/basic/automation/ai/scripting/sample-scripts.mdx index b4e0bb02..be513b58 100644 --- a/zh/basic/automation/ai/scripting/sample-scripts.mdx +++ b/archive/zh/basic/automation/ai/scripting/sample-scripts.mdx @@ -335,6 +335,6 @@ output.set("sent", res.ok); ## 相关文档 -- [运行脚本指南](/zh/basic/automation/ai/scripting/ai-script-guide) +- 运行脚本指南 - [HTTP 请求](/zh/basic/automation/actions/logic/http-request) -- [循环执行](/zh/basic/automation/actions/logic/loop-run) +- 循环执行 diff --git a/zh/basic/automation/example.mdx b/archive/zh/basic/automation/example.mdx similarity index 100% rename from zh/basic/automation/example.mdx rename to archive/zh/basic/automation/example.mdx diff --git a/zh/basic/automation/logic.mdx b/archive/zh/basic/automation/logic.mdx similarity index 100% rename from zh/basic/automation/logic.mdx rename to archive/zh/basic/automation/logic.mdx diff --git a/zh/basic/automation/trigger.mdx b/archive/zh/basic/automation/trigger.mdx similarity index 100% rename from zh/basic/automation/trigger.mdx rename to archive/zh/basic/automation/trigger.mdx diff --git a/zh/basic/field/ai/ai-field-practical-guide.mdx b/archive/zh/basic/field/ai/ai-field-practical-guide.mdx similarity index 100% rename from zh/basic/field/ai/ai-field-practical-guide.mdx rename to archive/zh/basic/field/ai/ai-field-practical-guide.mdx diff --git a/zh/basic/organization/organization.mdx b/archive/zh/basic/organization/organization.mdx similarity index 100% rename from zh/basic/organization/organization.mdx rename to archive/zh/basic/organization/organization.mdx diff --git a/zh/basic/organization/security.mdx b/archive/zh/basic/organization/security.mdx similarity index 100% rename from zh/basic/organization/security.mdx rename to archive/zh/basic/organization/security.mdx diff --git a/zh/basic/organization/setting.mdx b/archive/zh/basic/organization/setting.mdx similarity index 100% rename from zh/basic/organization/setting.mdx rename to archive/zh/basic/organization/setting.mdx diff --git a/zh/basic/organization/user.mdx b/archive/zh/basic/organization/user.mdx similarity index 100% rename from zh/basic/organization/user.mdx rename to archive/zh/basic/organization/user.mdx diff --git a/docs.json b/docs.json index d8d92b10..e8c9f7eb 100644 --- a/docs.json +++ b/docs.json @@ -27,6 +27,16 @@ "keywords": "database, app builder, AI, no-code, low-code, Airtable alternative, PostgreSQL, automation" } }, + "redirects": [ + { + "source": "/en/about", + "destination": "/en/basic/ai/overview" + }, + { + "source": "/zh/about", + "destination": "/zh/basic/ai/overview" + } + ], "navigation": { "languages": [ { @@ -60,6 +70,7 @@ "en/basic/ai/app-builder-practical-guide" ] }, + "en/basic/field/ai/ai-field", "en/basic/ai/custom-model" ] }, @@ -122,7 +133,8 @@ "en/basic/automation/actions/ai/ai-generate", "en/basic/automation/actions/records/cross-base", "en/basic/automation/actions/logic/loop-run", - "en/basic/automation/actions/manual/conditional-logic" + "en/basic/automation/actions/manual/conditional-logic", + "en/basic/automation/ai/scripting/runscript" ] } ] @@ -165,15 +177,15 @@ { "group": "Basic Field", "pages": [ - "en/basic/field/basic/single-line-text", - "en/basic/field/basic/long-text", - "en/basic/field/basic/number", - "en/basic/field/basic/single-select", - "en/basic/field/basic/multiple-select", - "en/basic/field/basic/date", - "en/basic/field/basic/rating", - "en/basic/field/basic/checkbox", - "en/basic/field/basic/attachment" + "en/basic/field/single-line-text", + "en/basic/field/long-text", + "en/basic/field/number", + "en/basic/field/single-select", + "en/basic/field/multiple-select", + "en/basic/field/date", + "en/basic/field/rating", + "en/basic/field/checkbox", + "en/basic/field/attachment" ] }, { @@ -182,27 +194,27 @@ { "group": "Formula", "pages": [ - "en/basic/field/advanced/formula", - "en/basic/field/advanced/formula/grammar", - "en/basic/field/advanced/formula/cheat-sheet" + "en/basic/field/formula", + "en/basic/field/formula/grammar", + "en/basic/field/formula/cheat-sheet" ] }, - "en/basic/field/advanced/link", - "en/basic/field/advanced/rollup", - "en/basic/field/advanced/lookup", - "en/basic/field/advanced/conditional-rollup", - "en/basic/field/advanced/conditional-lookup", - "en/basic/field/advanced/user", - "en/basic/field/advanced/created-by", - "en/basic/field/advanced/last-modified-by", - "en/basic/field/advanced/created-time", - "en/basic/field/advanced/last-modified-time", - "en/basic/field/advanced/auto-number", + "en/basic/field/link", + "en/basic/field/rollup", + "en/basic/field/lookup", + "en/basic/field/conditional-rollup", + "en/basic/field/conditional-lookup", + "en/basic/field/user", + "en/basic/field/created-by", + "en/basic/field/last-modified-by", + "en/basic/field/created-time", + "en/basic/field/last-modified-time", + "en/basic/field/auto-number", { "group": "Button", "pages": [ - "en/basic/field/advanced/button", - "en/basic/field/advanced/button-practical-guide" + "en/basic/field/button", + "en/basic/field/button-practical-guide" ] } ] @@ -218,7 +230,7 @@ ] }, { - "group": "Record", + "group": "Records", "pages": [ "en/basic/record", "en/basic/record/comment", @@ -233,16 +245,7 @@ "en/basic/view/kanban", "en/basic/view/gallery", "en/basic/view/calendar", - { - "group": "Toolbar", - "pages": [ - "en/basic/view/toolbar/filter", - "en/basic/view/toolbar/group", - "en/basic/view/toolbar/sort", - "en/basic/view/toolbar/share", - "en/basic/view/toolbar/collaboration-mode" - ] - } + "en/basic/view/toolbar" ] } ] @@ -425,6 +428,7 @@ "zh/basic/ai/app-builder-practical-guide" ] }, + "zh/basic/field/ai/ai-field", "zh/basic/ai/custom-model" ] }, @@ -488,7 +492,8 @@ "zh/basic/automation/actions/ai/ai-generate", "zh/basic/automation/actions/records/cross-base", "zh/basic/automation/actions/logic/loop-run", - "zh/basic/automation/actions/manual/conditional-logic" + "zh/basic/automation/actions/manual/conditional-logic", + "zh/basic/automation/ai/scripting/runscript" ] } ] @@ -531,15 +536,15 @@ { "group": "基础字段", "pages": [ - "zh/basic/field/basic/single-line-text", - "zh/basic/field/basic/long-text", - "zh/basic/field/basic/number", - "zh/basic/field/basic/single-select", - "zh/basic/field/basic/multiple-select", - "zh/basic/field/basic/date", - "zh/basic/field/basic/rating", - "zh/basic/field/basic/checkbox", - "zh/basic/field/basic/attachment" + "zh/basic/field/single-line-text", + "zh/basic/field/long-text", + "zh/basic/field/number", + "zh/basic/field/single-select", + "zh/basic/field/multiple-select", + "zh/basic/field/date", + "zh/basic/field/rating", + "zh/basic/field/checkbox", + "zh/basic/field/attachment" ] }, { @@ -548,27 +553,27 @@ { "group": "公式", "pages": [ - "zh/basic/field/advanced/formula", - "zh/basic/field/advanced/formula/grammar", - "zh/basic/field/advanced/formula/cheat-sheet" + "zh/basic/field/formula", + "zh/basic/field/formula/grammar", + "zh/basic/field/formula/cheat-sheet" ] }, - "zh/basic/field/advanced/link", - "zh/basic/field/advanced/rollup", - "zh/basic/field/advanced/lookup", - "zh/basic/field/advanced/conditional-rollup", - "zh/basic/field/advanced/conditional-lookup", - "zh/basic/field/advanced/user", - "zh/basic/field/advanced/created-by", - "zh/basic/field/advanced/last-modified-by", - "zh/basic/field/advanced/created-time", - "zh/basic/field/advanced/last-modified-time", - "zh/basic/field/advanced/auto-number", + "zh/basic/field/link", + "zh/basic/field/rollup", + "zh/basic/field/lookup", + "zh/basic/field/conditional-rollup", + "zh/basic/field/conditional-lookup", + "zh/basic/field/user", + "zh/basic/field/created-by", + "zh/basic/field/last-modified-by", + "zh/basic/field/created-time", + "zh/basic/field/last-modified-time", + "zh/basic/field/auto-number", { "group": "按钮", "pages": [ - "zh/basic/field/advanced/button", - "zh/basic/field/advanced/button-practical-guide" + "zh/basic/field/button", + "zh/basic/field/button-practical-guide" ] } ] @@ -599,16 +604,7 @@ "zh/basic/view/kanban", "zh/basic/view/gallery", "zh/basic/view/calendar", - { - "group": "工具栏", - "pages": [ - "zh/basic/view/toolbar/filter", - "zh/basic/view/toolbar/group", - "zh/basic/view/toolbar/sort", - "zh/basic/view/toolbar/share", - "zh/basic/view/toolbar/collaboration-mode" - ] - } + "zh/basic/view/toolbar" ] } ] diff --git a/en/basic/ai/ai-chat.mdx b/en/basic/ai/ai-chat.mdx index ced42b09..bac584f8 100644 --- a/en/basic/ai/ai-chat.mdx +++ b/en/basic/ai/ai-chat.mdx @@ -12,7 +12,7 @@ AI prioritizes the current page. To reference other tables, views, apps, automat ## How to Open -Open a table or view, then click the **Cuppy** icon in the top right corner to open AI Chat. Describe the question or task in the input box. If the task will modify data or create nodes, ask AI to list the plan first, then confirm before execution. +Open a table or view, then click the Cuppy in the top right corner to open AI Chat. Describe the question or task in the input box. If the task will modify data or create nodes, ask AI to list the plan first, then confirm before execution. ## What AI Can Reference diff --git a/en/basic/ai/app-builder.mdx b/en/basic/ai/app-builder.mdx index 2a214cc0..1052cdf4 100644 --- a/en/basic/ai/app-builder.mdx +++ b/en/basic/ai/app-builder.mdx @@ -24,6 +24,12 @@ There are two main ways to create an app: The App Builder provides a dual-interface for both non-technical users and developers. +App Builder editor interface + ### 1. Chat Interface (AI-Driven) The command center for your app. - **Natural Language Editing**: Describe changes like *"Make the header blue"* or *"Add a submission form for new records"*. @@ -40,6 +46,12 @@ For infinite customization, you have direct access to the code. - **React Components**: Edit the underlying React code, Tailwind CSS classes, and logic. - **File Tree**: Navigate through the project structure. +App Builder code editor + #### Download Code You can download the entire app as a ZIP archive at any time: 1. Switch to the **Code** tab in the editor. @@ -61,8 +73,6 @@ You can update the app's code by importing a ZIP: - A root `.env` file in the ZIP is read into the app's custom environment variables. Other `.env*` variants, such as `.env.local`, are ignored. -![](/images/2026-02-28-18-14-08.png) - ## Publishing & Management ### Publishing Your App @@ -70,16 +80,34 @@ When your app is ready, click the **Publish** button (arrow icon) in the top rig - **Public URL**: Teable generates a secure, publicly accessible URL for your app. - **Custom Domain**: Map your own domain to the app. +Publish app menu + ### Custom Domains Use **Custom domain** to bind a domain to the published app. A subdomain is recommended, such as `app.yourdomain.com`. After you enter the domain, Teable shows the DNS records to add. Add the records with your DNS provider, wait for propagation, then verify the domain in Teable. You can also use an available subdomain under `teable.app`, such as `your-name.teable.app`. +Custom domain settings + ### App Login Click **Add login** in the app header to require visitors to sign in before they can use the app. Once login is configured, the button changes to **Login settings**. +App login settings + When you enable login: 1. Choose where to store app users. You can create a **Users** table or reuse an existing table with an email field. Each signed-in user is stored as one record, and the same user table can be reused by multiple apps. @@ -93,6 +121,12 @@ Teable automatically tracks every deployment. - Click the **History** (clock icon) button to view a list of all deployed versions. - **One-Click Rollback**: If a new update causes issues, you can instantly revert the live app to any previous stable version. +App version history + ### Auto-fix If your custom code changes cause a build error, the deployment will fail. - Teable provides an **Auto-fix** button alongside the error log. diff --git a/en/basic/ai/custom-model.mdx b/en/basic/ai/custom-model.mdx index 0ed6b288..8513a302 100644 --- a/en/basic/ai/custom-model.mdx +++ b/en/basic/ai/custom-model.mdx @@ -25,6 +25,12 @@ After setup, the models you add can be used by **AI Fields**, **Automations**, * 2. Click **Settings** in the top right corner. 3. Go to **AI settings**. +AI settings page + ## Setup Steps Under **AI Capabilities**, turn on what you need: @@ -42,6 +48,12 @@ Click **Add LLM provider** and fill in the following: - **API Key**: Enter the API key from the provider. - **Models**: Enter the model names you want to connect. Separate multiple models with English commas. +Add LLM provider dialog + #### Agent Support Scope To use **AI Chat** and **App Builder** reliably, configure one of the supported models below. Models outside this list may still work for **AI Fields** or **Automations**, but they are not recommended for agent-based features. In **AI Chat** and **App Builder**, unsupported endpoints, providers, or models may produce weaker results, miss tool-use capabilities, or cause runtime errors. Teable does not provide troubleshooting or performance support for configurations outside this scope. @@ -89,7 +101,6 @@ Common Base URL examples: | XAI (Grok) | `https://api.x.ai/v1` | | OpenRouter | `https://openrouter.ai/api/v1` | | TogetherAI | `https://api.together.xyz/v1` | -| Ollama (Local) | `http://localhost:11434` | ### Models @@ -109,7 +120,6 @@ Common model examples: | OpenRouter | `anthropic/claude-opus-4-6, google/gemini-3.1-pro-preview` | | TogetherAI | `deepseek-ai/DeepSeek-R1, meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8` | | Mistral | `mistral-large-latest, mistral-medium-latest, codestral-latest` | -| Ollama | `qwen3.5:9b, gemma3:12b, llama3.2:8b` | Notes: diff --git a/en/basic/automation/actions/ai/ai-generate.mdx b/en/basic/automation/actions/ai/ai-generate.mdx index b8e78ae5..904e5611 100644 --- a/en/basic/automation/actions/ai/ai-generate.mdx +++ b/en/basic/automation/actions/ai/ai-generate.mdx @@ -186,6 +186,6 @@ Text: {{Content}} ## Related - [Loop (batch)](../logic/loop-run) — process multiple records with AI in a single automation run -- [Run script guide](/en/basic/automation/ai/scripting/ai-script-guide) — for custom logic that goes beyond prompt-based generation +- [Run script](/en/basic/automation/ai/scripting/runscript) — for custom logic that goes beyond prompt-based generation - [Send email](/en/basic/automation/actions/communication/send-email-overview) - [Update record](/en/basic/automation/actions/records/update-record) diff --git a/en/basic/automation/actions/logic/http-request.mdx b/en/basic/automation/actions/logic/http-request.mdx index 49dcb3ef..5968a179 100644 --- a/en/basic/automation/actions/logic/http-request.mdx +++ b/en/basic/automation/actions/logic/http-request.mdx @@ -131,4 +131,4 @@ This is useful for chaining API calls — for example, create something via POST - [Loop (batch)](/en/basic/automation/actions/logic/loop-run) — make HTTP requests for each item in an array - [When webhook received](/en/basic/automation/trigger/external/webhook-received) — the inbound counterpart: receive HTTP requests from external systems -- [Run script guide](/en/basic/automation/ai/scripting/ai-script-guide) — for more complex API interactions with custom code +- [Run script](/en/basic/automation/ai/scripting/runscript) — for more complex API interactions with custom code diff --git a/en/basic/automation/actions/records/get-records.mdx b/en/basic/automation/actions/records/get-records.mdx index ec3bd68e..2d2fb114 100644 --- a/en/basic/automation/actions/records/get-records.mdx +++ b/en/basic/automation/actions/records/get-records.mdx @@ -50,7 +50,7 @@ The output is an **array of records**. Each record in the array contains: - **Reference a single record:** If you only expect one result (or want the first one), you can reference fields from the first record directly using the **+** variable picker. - **Loop through all records:** Add a [Loop (Batch)](../logic/loop-run) action after Get Records and select the results array as the data source. Inside the loop, reference each item's fields. -- **Process in a script:** Pass the array to a [Run script](/en/basic/automation/ai/scripting/ai-script-guide) step for custom processing, filtering, or transformation. +- **Process in a script:** Pass the array to a [Run script](/en/basic/automation/actions/ai/ai-script) step for custom processing, filtering, or transformation. ## Pagination diff --git a/en/basic/automation/ai/scripting/ai-script-guide.mdx b/en/basic/automation/ai/scripting/runscript.mdx similarity index 96% rename from en/basic/automation/ai/scripting/ai-script-guide.mdx rename to en/basic/automation/ai/scripting/runscript.mdx index afa35072..10876db8 100644 --- a/en/basic/automation/ai/scripting/ai-script-guide.mdx +++ b/en/basic/automation/ai/scripting/runscript.mdx @@ -1,9 +1,15 @@ --- -title: "Run script guide" +title: "Run script" description: "Run custom JavaScript in a secure sandbox for logic that goes beyond built-in actions" --- {/* mintlify-resync: 2026-05-14 */} + +We strongly recommend using Run script to build automations, because it can cover all action behaviors, including actions that would otherwise need to be built manually. Just describe your requirements to AI in chat. + +Please note: if you add actions manually, AI will not recognize or modify them later. + + The Run script action lets you write custom JavaScript to handle logic that built-in actions cannot cover. You can transform data, call external APIs, perform calculations, implement conditional branching, and more — all within a secure sandbox environment. Scripts receive data from previous steps via the `input` object and pass results to subsequent steps via the `output.set()` function. @@ -274,6 +280,5 @@ output.set("isVIP", vipDomains.includes(domain)); ## Related -- [Sample scripts](/en/basic/automation/ai/scripting/sample-scripts) — ready-to-use examples for common tasks - [AI generate](/en/basic/automation/actions/ai/ai-generate) — for prompt-based AI tasks that do not need custom code - [HTTP request](/en/basic/automation/actions/logic/http-request) — for simple API calls that do not need scripting diff --git a/en/basic/automation/trigger/external/webhook-received.mdx b/en/basic/automation/trigger/external/webhook-received.mdx index f1ea4e9f..7282b2eb 100644 --- a/en/basic/automation/trigger/external/webhook-received.mdx +++ b/en/basic/automation/trigger/external/webhook-received.mdx @@ -126,5 +126,5 @@ Requests exceeding the rate limit will receive an HTTP 429 response. If your ext ## Related - [HTTP request action](/en/basic/automation/actions/logic/http-request) — the outbound counterpart: call external APIs from your workflow -- [Run script guide](/en/basic/automation/ai/scripting/ai-script-guide) — for advanced webhook payload processing +- [Run script](/en/basic/automation/ai/scripting/runscript) — for advanced webhook payload processing - [Loop (batch) action](/en/basic/automation/actions/logic/loop-run) — process arrays in webhook payloads diff --git a/en/basic/base.mdx b/en/basic/base.mdx index c5d50590..364075bf 100644 --- a/en/basic/base.mdx +++ b/en/basic/base.mdx @@ -8,24 +8,31 @@ A base is a tool for storing and processing all information for a specific proje For users unfamiliar with bases, you can think of them as workbooks in Excel, where each workbook can contain multiple sheets. +## Create and Manage Bases + ### Adding a Base 1. Enter a space 2. Click "Create Base" in the upper right corner -### Renaming a Base - -1. Enter a space -2. Hover over a base -3. Click the "···" button to open the menu -4. Click "Rename" +Create a base -### Deleting a Base +### Renaming/Deleting a Base 1. Enter a space 2. Hover over a base 3. Click the "···" button to open the menu -4. Click "Delete" +4. Click "Rename" or "Delete" + +Rename or delete a base ### Organize Resources in a Base @@ -48,11 +55,13 @@ Step 3: In the popup, choose the target space. You need Creator permissions in t For larger bases, Teable shows progress in the duplicate dialog while it copies the base structure, records, and attachments. Keep the dialog open until the copy finishes. Revision history and collaborators are not copied. Duplicate a base to another space +## Import and Export Bases + ### Import Base (Data Migration) The `.tea` file format allows you to import a complete base with all its tables, fields, data, and configurations. This is useful for: @@ -67,7 +76,7 @@ The `.tea` file format allows you to import a complete base with all its tables, 4. Upload the `.tea` file to confirm the import Import a base from a .tea file @@ -86,20 +95,17 @@ Export your base to a `.tea` file for backup or migration purposes. The exported 7. Click **Download** in the export dialog to save the `.tea` file. Export a base to a .tea file - -**Data Migration Tip**: To migrate data between Teable instances, export your base from the source instance, then import the `.tea` file to the target instance. All data and configurations will be preserved. - - -Teable converts cross-base relation fields to single-line text fields in the exported file. +- To migrate data between Teable instances, export your base from the source instance, then import the `.tea` file to the target instance. All data and configurations will be preserved. +- Teable converts cross-base relation fields to single-line text fields in the exported file. -### Share a Base +## Share a Base Bases can be shared through public links. The sharing scope can be the entire base or the currently selected item. @@ -108,6 +114,12 @@ Bases can be shared through public links. The sharing scope can be the entire ba 3. Turn on **Share to web** 4. Copy the share link or QR code +Open base sharing + Sharing scopes include: | Scope | Description | @@ -117,9 +129,15 @@ Sharing scopes include: In the share settings, you can configure link permissions, **Allow viewers to copy data**, password access, regenerate the link, delete the share link, or copy the embed config. +Base sharing settings + If the sharing scope includes an app, the app must be published before it can be accessed through the public link. -### Features Within a Base +## Features Within a Base A base can contain multiple tables for recording and organizing work or business-related information. diff --git a/en/basic/field.mdx b/en/basic/field.mdx index ec43660e..42b05ac0 100644 --- a/en/basic/field.mdx +++ b/en/basic/field.mdx @@ -4,7 +4,18 @@ description: "Fields are the columns in a table. By combining different field ty --- {/* mintlify-resync: 2026-05-14 */} -### Adding Fields + +## Field Types + +Teable currently provides these field types: + +| Category | Field types | +| --- | --- | +| Basic fields | [Single line text](/en/basic/field/single-line-text), [Long text](/en/basic/field/long-text), [Number](/en/basic/field/number), [Single select](/en/basic/field/single-select), [Multiple select](/en/basic/field/multiple-select), [User](/en/basic/field/user), [Date](/en/basic/field/date), [Rating](/en/basic/field/rating), [Checkbox](/en/basic/field/checkbox), [Attachment](/en/basic/field/attachment) | +| Advanced fields | [Formula](/en/basic/field/formula), [Link to record](/en/basic/field/link), [Lookup](/en/basic/field/lookup), [Rollup](/en/basic/field/rollup), [Conditional lookup](/en/basic/field/conditional-lookup), [Conditional rollup](/en/basic/field/conditional-rollup), [Button](/en/basic/field/button), [Auto number](/en/basic/field/auto-number) | +| System fields | [Created time](/en/basic/field/created-time), [Last modified time](/en/basic/field/last-modified-time), [Created by](/en/basic/field/created-by), [Last modified by](/en/basic/field/last-modified-by) | + +## Adding Fields In the table view, follow these steps to add a new field: @@ -12,24 +23,26 @@ In the table view, follow these steps to add a new field: 2. Scroll the table to the rightmost side 3. Click the + icon on the far right of the field bar - Screenshot +Add a field + 4. Edit the field in the popup dialog 5. Click Save -### Editing Fields +## Editing Fields Users can edit fields when adding them or edit existing fields when needed. To edit an existing field, follow these steps: 1. Right-click the field you want to edit - Screenshot +Field menu actions + 2. Click the Edit Field option in the expanded menu 3. Edit the field in the Edit Field dialog 4. Click Save @@ -42,26 +55,20 @@ Users can edit fields when adding them or edit existing fields when needed. To e For detailed information about each field type and its specific customization options, please refer to the documentation for each field type. -### Deleting Fields +## Deleting Fields 1. Right-click the field you want to edit - - Screenshot 2. Click the Delete Field option in the expanded menu 3. Click Confirm in the confirmation dialog -### Hiding Fields +## Hiding Fields -Users can hide fields through the field right-click menu or the hide tool. Hidden fields will not be displayed in the table view. Users can control field visibility at any time using the hide tool. For filtering, sorting, grouping, and other toolbar capabilities, see [Filter](/en/basic/view/toolbar/filter), [Sort](/en/basic/view/toolbar/sort), and [Group](/en/basic/view/toolbar/group). +Users can hide fields through the field right-click menu or the hide tool. Hidden fields will not be displayed in the table view. Users can control field visibility at any time using the hide tool. For filtering, sorting, grouping, and other toolbar capabilities, see [View toolbar](/en/basic/view/toolbar). In the hide tool, click a visible field name to scroll the grid to that column and briefly highlight it. Use the switch next to each field when you want to show or hide the field. Screenshot diff --git a/en/basic/field/advanced/auto-number.mdx b/en/basic/field/advanced/auto-number.mdx deleted file mode 100644 index 53fbc85c..00000000 --- a/en/basic/field/advanced/auto-number.mdx +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: "Auto Number" -description: "Auto Number fields provide a method to automatically generate unique sequence numbers when creating new records. This field type is particularly useful when you need to assign a sequential, non-repeating identifier to each record." ---- - -## Creating Auto Number Fields - -To set up an Auto Number field in your table, follow these steps: - -* In the table view, click the "Add Field" button. - -* Name the new field and select "Auto Number" as the field type from the dropdown menu. - -Once created, this field will automatically assign a sequential number to each new record. These numbers are unique and won't be reordered even if records are deleted or other operations occur. - -## Configuration and Customization - -Auto Number fields currently have **no configurable options** in the field settings. The sequence is automatically generated by the system (typically starting from 1 and increasing by 1). - -## Use Cases - -### Order Tracking - -Auto Number fields are ideal for tracking orders, especially when you need to assign a unique order number to each order. - -### Member or Customer IDs - -Assign unique IDs to your members or customers, ensuring everyone has a distinct identifier. - -### Project Management - -Automatically assign a project number to each new project, ensuring all projects can be easily tracked and referenced. - -### Event or Ticketing Systems - -Assign unique reference numbers to event participants or tickets. - -## Important Notes - -1. Auto Number fields are unique, sequential, and cannot be modified. Even after a record is deleted, its number will remain occupied and won't be reused. diff --git a/en/basic/field/advanced/button-practical-guide.mdx b/en/basic/field/advanced/button-practical-guide.mdx deleted file mode 100644 index 3150b6c7..00000000 --- a/en/basic/field/advanced/button-practical-guide.mdx +++ /dev/null @@ -1,159 +0,0 @@ ---- -title: "Button Practical Guide" ---- - -Recurring, multi-step processes—like lead conversion, content approval pipelines, or project task reminders—often involve tedious manual work: copying, pasting, switching between apps, and sending notifications. - -The Button field is designed to eliminate this friction. Think of it as a "smart remote" for each row of your data, allowing you to trigger complex, pre-configured workflows with a single click. - - -This guide will walk you through two key areas: -1. **What can the Button field do?**—Unlock its full potential. -2. **How do you use it?**—A step-by-step guide to configuring your first automation button. - - ---- - -## What Can You Do With It? - -The core value of the Button field lies in its ability to connect and execute. It can link data within your tables and integrate with external systems, bundling a series of actions into a single click. - -### Use Case 1: One-Click Lead Conversion - -In a CRM, when a sales representative identifies a mature lead, they can simply click a "Convert to Opportunity" button. - -The automation instantly creates a new record in the "Opportunities Table," populates it with all the key information from the lead, and updates the original lead's status to "Converted." -Screenshot - -### Use Case 2: One-Click Content Scheduling - -Once a content draft is approved, an editor clicks the "Schedule for Publication" button. - -The system automatically creates a new post entry in the "Social Media Schedule Table" and sends an email notification to the social media manager: "A new draft [xxx] is ready for scheduling." -Screenshot -Screenshot - -### Use Case 3: One-Click Task Reminders - -When a project task is nearing its deadline but remains incomplete, the project manager clicks the "Send Reminder" button. - -The system immediately sends a notification via your team's preferred communication tool (e.g., Slack, Teams, Email): "[Task Reminder] The task 'XXX' assigned to you is due soon. Please prioritize its completion!" This seamlessly integrates your data table with your team's communication workflow. -Screenshot - ---- - -## How to Set It Up - -Let's walk through the classic "One-Click Lead Conversion" example to see how to configure a button. - -First, you'll need two tables: a **"Leads Table"** and an **"Opportunities Table"**. - -### Step 1: Create the Button Field - -In your "Leads Table," add a new field with the following settings: - -1. **Field Type**: Choose "Button". -2. **Button Label**: Enter "Convert" and pick a distinct color, like blue. -3. **Confirm Before Click** (Optional): If this step should not be triggered by mistake, turn on the confirmation dialog and fill in the title, content, and confirm-button text. - - Screenshot - -### Step 2: Custom the Automation Workflow - -Screenshot - -1. Click "Custom automation" - -2. **Configure Actions**: Define what happens when the button is clicked. - - **Action 1: Create a new record in the "Opportunities Table"** - - **Action Type**: Select "Create Record". - - **Target Table**: Choose the "Opportunities Table". - - **Field Mapping**: This is the most critical part, where you pass data from the lead to the new opportunity. - > - `Opportunity Name` field = `Company Name` from the triggering record. - > - `Related Contact` field = `Contact Name` from the triggering record. - > - ... (map other relevant fields). - - **Action 2: Update the current lead's status** - - Add a second action of type "Update Record". - - **Target Table**: "Leads Table". - - **Record ID**: Select the ID "from the record that triggered the workflow". - - **Field to Update**: Set the `Status` field to "Converted". - -And you're done! Your "Lead to Opportunity" workflow is now active. - - -In the "Actions" step, you can add even more powerful integrations. - -#### Send an Email - -To notify a sales director of a new conversion, add a "Send Email" action. You can configure: -- **Recipient**: Use a static email address or dynamically pull from a "User" field. -- **Subject/Body**: Insert dynamic values from the triggering record. - > Example: "New Opportunity: [Company Name] was converted by [Owner]." - -Screenshot -> Example of a task reminder email. - -#### Make an HTTP Request -This advanced feature lets you communicate with any external system via API. For instance, you could sync a new customer's details to a separate accounting software. -Screenshot - - - ---- - -## Advanced Feature: Precise Control with Limit Clicks - -The Button field settings include two powerful options: "Max Clicks" and "Allow Reset". - -### Feature Breakdown -- **Max Clicks**: Sets a maximum number of times the button can be clicked for each individual record. The button becomes disabled once the limit is reached. -- **Allow Reset**: Allows a user to manually reset the click count, re-enabling a disabled button. - -### Use Case: Preventing Duplicate Lead Conversions - - -This simple setting is crucial for maintaining data integrity. By setting the maximum clicks to `1`, you ensure a lead can only be converted into one opportunity, eliminating the risk of duplicate records from accidental double-clicks. - - -- **Max Clicks**: Set to `1`. -- **Allow Reset**: Keep this option disabled. - -Screenshot - -With these granular controls, the Button field evolves from a simple trigger into a smart controller with built-in business logic, capable of handling more complex and sophisticated management scenarios. diff --git a/en/basic/field/advanced/button.mdx b/en/basic/field/advanced/button.mdx deleted file mode 100644 index c121b48b..00000000 --- a/en/basic/field/advanced/button.mdx +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: "Button" ---- - -The Button field is a powerful, interactive field that turns each row in your table into an actionable element. With a single click, users can instantly trigger a pre-configured automation, accomplishing everything from simple status updates to complex system integrations. - -### **Feature Details** - -* **Trigger Automations with a Click**: A button serves as a manual trigger for your automations. This provides the perfect entry point for workflows that require a human decision to kick them off. - -* **Customizable Appearance**: Freely customize the button's label and color to make it visually intuitive and clearly communicate its purpose (e.g., "Submit for Approval," "Send Reminder," "Generate Report"). - -### **Use Cases** - -The Button field is incredibly versatile, simplifying repetitive, multi-step manual tasks into a single click. - -* **Managing Statuses**: In a project management board, you can create buttons like "Start Task," "Mark as Complete," or "Archive." A single click can automatically update the "Status" field for that record, moving the workflow forward. - -* **Moving Data Between Tables**: In a CRM, when a lead is qualified, a "Convert to Opportunity" button can trigger an automation that copies key information from the lead record and creates a new entry in your "Opportunities" table. - -* **Sending Notifications**: Need to send a follow-up? A "Send Reminder" button can trigger an automation to send a customized message via email, Slack, or another service, complete with a link back to the specific record. - -* **Integrating with Other Systems**: By using an HTTP request as your automation's action, a button click can trigger actions in external services via their APIs. - -### **How to Use** - -1. **Add and Configure the Field**: Create a new field in your table and select the "Button" type. - * **Label and Color**: Customize the text (e.g., "Send Email") and color of the button. - * **Limit Click** (Optional): Enable the "Limit number of clicks" toggle to set a maximum number of times the button can be clicked for each record (e.g., once). You can also configure whether the click count can be reset. - * **Confirm Before Click** (Optional): Turn this on to configure the confirmation dialog title, body, and confirm-button text for actions that should be confirmed before running. -2. **Custom Automation**: Create a new automation using "When a button is clicked" as the trigger. -3. **Define the Action**: In the "Actions" section of your automation, define what you want to happen when the button is clicked, such as updating the record, creating a new record, sending an email, and more. - -### **Important Notes** - -* **Automation Run Quotas**: Each successful button click that triggers an automation will count against your workspace's automation run quota. Please refer to our pricing and limits documentation for more details. -* **Permissions are Separate**: The permission to click a button is separate from the permission to edit a record. **This means users with read-only access, or even visitors viewing a shared link, can click the button and trigger its automation as long as the button is visible to them.** This makes it a secure way to grant operational permissions for things like approvals, voting, or external feedback without granting access to edit the underlying data. -* **Dependent on Automations**: A button does nothing on its own. Its functionality is entirely dependent on its linked automation. If the automation is disabled or deleted, clicking the button will have no effect. diff --git a/en/basic/field/advanced/conditional-lookup.mdx b/en/basic/field/advanced/conditional-lookup.mdx deleted file mode 100644 index feb2153f..00000000 --- a/en/basic/field/advanced/conditional-lookup.mdx +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: "Conditional Lookup" -description: "Cross-table data query functionality that dynamically fetches records based on filter conditions without requiring pre-established table relationships." ---- - -## Overview - -Conditional Lookup is a cross-table data query feature that allows you to dynamically fetch qualifying data records from other tables based on configured filter conditions, without the need to pre-establish relationships between tables. - -- **Flexible Filtering**: Support for complex condition combinations to precisely target relevant data -- **Dynamic Matching**: Reference current table field values as filter conditions for intelligent queries -- **Result Control**: Support for sorting and quantity limits to focus on key information - -## Procedure - -**Step 1: Create Conditional Lookup Field** -1. Click the + icon on the right side of the field name -2. Select "Conditional Lookup" field type -3. Enter field title (e.g., "Related Orders") - -**Step 2: Select Target Table** -1. Choose the data table to query from the "Target Table Selection" dropdown menu -2. The system will display the field list of that table for subsequent configuration - -**Step 3: Configure Lookup Field** -1. Select the data field to extract from the "Lookup Field" -2. Determine the return data type (text, number, date, etc.) - -**Step 4: Set Filter Conditions** -1. Click "Add Filter Condition" -2. Select the field to filter -3. Select condition type (equals, not equals, contains, greater than, less than, contains, not contains, etc.) -4. Set comparison value: - - Static value: Directly input specific numerical value - - Field reference: Select current table field as dynamic value - -**Step 5: Configure Sorting and Limits (Optional)** -1. Set sorting field and sorting method (ascending/descending) -2. Set display record quantity limit - -**Note**: At least one filter condition must be configured. For multiple conditions, you can choose "All conditions met (AND)" or "Any condition met (OR)" logic. - -## Use Cases - -### Use Case 1: Sales Data Period-over-Period Analysis - -**Data Tables:** -- Period Sales Summary Table (contains period, start date, end date, sales amount fields) -- Sales Detail Table (contains sales amount, sales date fields) - -**Scenario:** -Calculate period-over-period growth rates for each period in the period sales summary table. Obtain current and previous period sales amounts through conditional rollups, then use formulas to calculate period-over-period values for automated comparative analysis. - -**Procedure:** - -**Create Conditional Rollup Field for Current Period Sales** -1. Create new conditional rollup field in period sales summary table, title "Current Period Sales" -2. Target table: Sales Detail Table -3. Rollup field: Sales Amount -4. Filter conditions: - - Field: Sales Date → Condition: Less than or equal → Value: End Date field of current table - - Field: Sales Date → Condition: Greater than or equal → Value: Start Date field of current table -5. Aggregate function: Sum - -**Create Conditional Lookup Field for Previous Period Sales** -1. Create new conditional lookup field, title "Previous Period Sales" -2. Target table: Period Sales Summary Table (this table) -3. Field: Current Period Sales -4. Filter conditions: - - Field: End Date → Condition: Equals → Value: Previous Period End Date field of current table -5. Aggregate function: Sum - -**Create Formula Field for Period-over-Period Calculation** -1. Create new formula field, title "Period-over-Period Growth Rate" -2. Formula: `(Current Period Sales - Previous Period Sales) / Previous Period Sales * 100` -3. Format: Percentage, 2 decimal places - -### Use Case 2: Sales Data Product Analysis - -**Data Tables:** -- Product Table (contains category ID, product name, sales volume fields) -- Category Table (contains category ID, category name fields) - -**Scenario:** -Find the top-selling products in each category within the category table to quickly understand star products across different categories. - -**Procedure:** - -**Top Selling Product** -1. Create new conditional lookup field in category table, title "Top Selling Product" -2. Target table: Product Table -3. Lookup field: Product Name -4. Filter conditions: - - Field: Category ID → Condition: Equals → Value: Category ID field of current table -5. Sorting: Sales Volume field → Descending -6. Limit display: 1 record - -**Sales Volume** -1. Create another conditional lookup field, title "Sales Volume" -2. Target table: Product Table -3. Lookup field: Sales Volume -4. Filter conditions: - - Field: Category ID → Condition: Equals → Value: Category ID field of current table -5. Sorting: Sales Volume field → Descending -6. Limit display: 1 record - -## FAQ - - -Filter field availability depends on the following limitations: -- **Field Type Limitations**: Certain complex field types (such as images, attachments) do not support filter conditions - - - -Key differences: -- **Association Method**: Regular Lookup requires pre-established relationship fields, while Conditional Lookup can dynamically configure filter conditions - \ No newline at end of file diff --git a/en/basic/field/advanced/conditional-rollup.mdx b/en/basic/field/advanced/conditional-rollup.mdx deleted file mode 100644 index f9fe3950..00000000 --- a/en/basic/field/advanced/conditional-rollup.mdx +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: "Conditional Rollup" -description: "Cross-table data query functionality that performs statistical calculations on filtered data, returning single aggregated result values." ---- - -## Overview - -Conditional Rollup is a cross-table data query feature that performs statistical calculations on filtered data, returning a single aggregated result value. It allows you to obtain qualifying data from other tables based on configured filter conditions and perform statistical analysis without pre-establishing relationships between tables. - -- **Conditional Aggregation**: Only perform statistics on data that meets conditions, excluding irrelevant data -- **Multi-dimensional Statistics**: Support for various calculation methods including sum, count, average, etc. -- **Real-time Updates**: Automatically recalculate when source data changes to ensure data accuracy - -## Procedure - -**Step 1: Create Conditional Rollup Field** -1. Click the + icon on the right side of the field name -2. Select "Conditional Rollup" field type -3. Enter field title (e.g., "Total Sales Amount") - -**Step 2: Select Target Table** -1. Choose the data table to query from the "Target Table Selection" dropdown menu -2. The system will display the field list of that table for subsequent configuration - -**Step 3: Configure Rollup Field** -1. Select the data field to perform statistical calculations on from the "Rollup Field" -2. Determine data type (number, text, date, etc.) - -**Step 4: Set Filter Conditions** -1. Click "Add Filter Condition" -2. Select the field to filter -3. Select condition type (equals, not equals, contains, greater than, less than, before, after, etc.) -4. Set comparison value: - - Static value: Directly input specific numerical value - - Field reference: Select current table field as dynamic value - -**Step 5: Select Aggregate Function** - -- Select appropriate calculation method based on data type: original value, unique, unique count, sum, count, average, maximum, minimum, etc. - -## Use Cases - -### Use Case 1: Team Task Volume Statistics - -**Tables:** -- Task Table -- Statistics Table - -**Scenario:** -Team administrators need to count the number of tasks in different statuses for each employee, including in-progress and completed tasks, for workload management and progress tracking. - -**Procedure:** - -**In-Progress Tasks** -1. Create new conditional rollup field in employee information table, title "In-Progress Tasks" -2. Target table: Task Assignment Table -3. Rollup field: Task ID -4. Filter conditions: - - Field: Assignee → Condition: Equals → Value: Employee field of current table - - Field: Task Status → Condition: Equals → Value: "In Progress" -5. Aggregate function: Count All - -**Completed Tasks** -1. Create another conditional rollup field, title "Completed Tasks" -2. Target table: Task Assignment Table -3. Rollup field: Task ID -4. Filter conditions: - - Field: Assignee → Condition: Equals → Value: Employee field of current table - - Field: Task Status → Condition: Equals → Value: "Completed" -5. Aggregate function: Count All - -### Use Case 2: Find Duplicate Values - -**Tables:** -- Customer Table (contains customer name, contact phone fields) - -**Scenario:** -Find duplicate customer names in the customer table to identify duplicate customer records for data cleaning and customer information management. - -**Procedure:** -1. Create new conditional rollup field in customer table, title "Customer Name Duplicate Count" -2. Target table: Customer Table (this table) -3. Rollup field: Customer Name -4. Filter conditions: - - Field: Customer Name → Condition: Equals → Value: Customer Name field of current table -5. Aggregate function: Count All -6. Create new formula field, title "Duplicate Flag" -7. Formula: `IF(Customer Name Duplicate Count > 1, "❗️ Duplicate", BLANK())` - -**Result**: The customer table will display the occurrence count of each customer name, and show "❗️ Duplicate" flag next to duplicate records for quick identification and processing of duplicate data. - -## FAQ - - -Key differences: -1. **Return Results**: Conditional Rollup returns a single calculated value, while Conditional Lookup returns a list of multiple original values -2. **Different Uses**: Conditional Rollup is used for statistical analysis, while Conditional Lookup is used for viewing detailed data -3. **Calculation Method**: Conditional Rollup includes aggregate calculations, while Conditional Lookup only filters and extracts data - \ No newline at end of file diff --git a/en/basic/field/advanced/created-by.mdx b/en/basic/field/advanced/created-by.mdx deleted file mode 100644 index 4f3dc2e2..00000000 --- a/en/basic/field/advanced/created-by.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Created By" -description: "The Created By field is a special field that automatically identifies and records the initial creator of a data entry. It provides teams with a powerful way to track and manage data origins, particularly valuable in contexts where knowing the data source or responsible person is important." ---- - -### Data Filtering and Sorting - -* **Filter by Creator**: You can use the Created By field to filter data by its initial creator. This is particularly useful when you need to find all data entries created by a specific person. - -### Dynamic View Display - -* **Filter Based on Current Creator**: Similar to member fields, the Created By field also allows applications to dynamically display content based on the current user (if they are the data creator). This ensures each creator only sees the data entries they created. - -### Data Association - -* **Data-Creator Association**: This field clearly shows the creator of each data entry, ensuring that the origin of each entry can be easily identified within the team. - -### How to Use - -* **Automatic Recording**: The Created By field is automatically filled when a new data entry is created, recording the current user as the creator. -* **Filtering Function**: In data views, select the Created By field as a filter condition, then choose specific creators to find all entries they created. - -### Important Notes - -* The Created By field is read-only, meaning it cannot be manually changed or edited. diff --git a/en/basic/field/advanced/created-time.mdx b/en/basic/field/advanced/created-time.mdx deleted file mode 100644 index 828ec70c..00000000 --- a/en/basic/field/advanced/created-time.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Created Time" -description: "The Created Time field is a special field that automatically records when a data entry was created. This field provides users with an exact time reference, making it easy to understand and track when data was generated." ---- - -### Automatic Recording - -* When a new data entry is created, this field automatically records the current date and time. - -### Data Filtering and Sorting - -* You can filter data entries based on creation time, helping to find data created within specific time periods. -* Combined with other fields like "Modified By" or "Member Field," you can precisely find data created or modified by specific users within particular time periods. - -### Data Analysis - -* Particularly valuable for time series analysis of data, helping to understand data generation trends and cycles. - -### How to Use - -* **Auto-fill**: When creating new data entries, the Created Time field automatically records the current date and time without user intervention. -* **Filter and Sort**: In data views, select the Created Time field as a filter or sort condition to find data entries created within specific time periods. - -### Important Notes - -* This field is automatically filled and cannot be modified. Any attempts to modify this field will be invalid. diff --git a/en/basic/field/advanced/formula.mdx b/en/basic/field/advanced/formula.mdx deleted file mode 100644 index 4c6a52c2..00000000 --- a/en/basic/field/advanced/formula.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: "Formula" -description: "Through defining formulas in fields, developers and users can perform dynamic calculations on data" ---- - -Formula fields allow you to perform calculations based on other field values. These calculations can be simple mathematical operations or complex string manipulations and logical evaluations. - -### Data Types and Formulas - -Before starting to write formulas, understanding data types is crucial for ensuring your formulas work correctly. Different data types support different operations and functions. Common data types include: - -* Numbers: Integers or decimals, supporting arithmetic operations. -* Text: String values, supporting concatenation and partial text operations. -* Dates: Specifically formatted dates, supporting date calculations. -* Boolean: True (TRUE) or false (FALSE), used for logical operations. - -### Referencing Fields - -In formulas, you can reference other field values by their field names. Make sure to use the correct field names and note that field names are case-sensitive. - -### Formula Writing Practices - -When writing formulas, you'll use operators, functions, and field references. Here are some practical formula writing practices: - -#### Using Operators - -* **Addition** (`+`): Used for calculating sums of numbers or concatenating strings. -* **Subtraction** (`-`): Used for calculating differences between numbers. -* **Multiplication** (`*`): Used for calculating products of numbers. -* **Division** (`/`): Used for calculating quotients of numbers. -* **Modulo** (`%`): Used for calculating remainders of numbers. - -#### Applying Functions - -Functions are predefined formulas that perform specific operations. For example, the `SUM` function can calculate the total of multiple values, while the `LEFT` function can extract a certain number of characters from a text field. For text processing, you can also use `TEXTBEFORE` to extract the part before a delimiter, or `TEXTSPLIT` to split text by a delimiter. - -#### Handling Text - -When working with text, you might need to use the following operations: - -* **Concatenation**: Use the `&` operator or `CONCATENATE` function to join two or more text strings. -* **Substrings**: Use `LEFT`, `RIGHT`, `MID`, or `TEXTBEFORE` functions to extract parts of strings. -* **Splitting text**: Use `TEXTSPLIT` to split text into multiple values by a specified delimiter. - -#### Logical Evaluation - -Use the `IF` function for logical evaluation to return different values based on conditions. The format is: - -```js -IF(condition, value_if_true, value_if_false) -``` - -To check whether a field is empty, compare it with `BLANK()`. For example, `IF({Weight}=BLANK(), 1, 2)` returns `1` when a number field is empty, otherwise it returns `2`. - -#### Complex Expressions - -You may need to write complex expressions involving multiple operations and functions. In such cases, ensure you use proper parentheses to control the order of operations. - -### Formatting and Interactive Display - -Formula results can also use [formatting](/en/basic/field/common/formatter) and [interactive display](/en/basic/field/common/show-as) settings, such as percentage formatting, progress bars, or icon styles. Because the result type is inferred while you write the formula, the available display options update along with it. - -## Debugging and Optimization - -Once a formula is written correctly, it should execute without errors and return expected results. If a formula isn't working as expected, you may need to debug it. - -### Debugging Tips - -* **Check Data Types**: Confirm that your operations and functions use the correct data types. -* **Verify Field References**: Ensure referenced field names are correct. -* **Step-by-Step Testing**: Break down complex formulas into smaller parts and test each part separately. - -### Performance Considerations - -* **Avoid Redundant Calculations**: If the same calculation is used in multiple places, consider storing its result in a separate field. -* **Limit Complex Functions**: Some complex functions, such as those involving large data operations, may impact performance. diff --git a/en/basic/field/advanced/formula/grammar.mdx b/en/basic/field/advanced/formula/grammar.mdx deleted file mode 100644 index b9d18787..00000000 --- a/en/basic/field/advanced/formula/grammar.mdx +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: "Formula Grammar" ---- - -### Basic Elements - -Our formula grammar consists of several basic elements: - -* **Strings**: Text surrounded by single or double quotes, such as 'Hello' or "World". -* **Numbers**: - * **Integers**: Pure numbers like 123 or -456. - * **Decimals**: Numbers with decimal points like 12.34 or -45.67. -* **Boolean Values**: These include `TRUE` and `FALSE`, representing true and false states. -* **Field References**: Used to reference values from specific fields. They must be written with curly braces, such as `{age}`, and the field name must match the actual field exactly. - -### Operators - -Operators in formulas are used to connect or compare values: - -* **Mathematical Operations**: - * Addition (+) - * Subtraction (-) - * Multiplication (*) - * Division (/) - * Modulo (%) - -* **Comparison Operations**: - * Greater than (>) - * Less than (\<) - * Greater than or equal to (>=) - * Less than or equal to (\<=) - * Equal to (=) - * Not equal to (!=) -* **Logical Operations**: - * Logical AND (&&) - * Logical OR (||) - -### Function Calls - -You can call functions within formulas. A function call consists of a function name, a pair of parentheses, and parameters inside the parentheses. Parameters are separated by commas. - -For example: `sum(1, 2, 3)` calls a function named `sum` with three parameters: 1, 2, and 3. - -### Other Structures - -1. **Parentheses**: You can use parentheses to change operation precedence, such as `(1 + 2) * 3`. -2. **Comments**: To improve formula readability or provide additional context for other users, you can add comments. Block comments are enclosed by `/*` and `*/`, while line comments start with `//`. -3. **Whitespace**: In formulas, whitespace, line breaks, and comments are typically ignored, but they can help improve formula readability. diff --git a/en/basic/field/advanced/last-modified-by.mdx b/en/basic/field/advanced/last-modified-by.mdx deleted file mode 100644 index d443cf52..00000000 --- a/en/basic/field/advanced/last-modified-by.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Last Modified By" -description: "The Last Modified By field automatically records the user who made the most recent changes to a specific data entry. This provides teams with a clear and accurate way to track the source of data modifications." ---- - -### Feature Details - -#### Data Filtering - -* **Filter by Modifier**: You can use the filtering function to find all data entries modified by specific individuals. - -#### Dynamic View Display - -* **Filter Based on Last Modifier**: This field can configure applications to dynamically display content based on who last modified the data, ensuring teams can quickly find data updated by specific members. - -### How to Use - -* **Automatic Recording**: When a data entry is modified, the Last Modified By field automatically updates to record the current user as the last modifier. - -* **Filtering Function**: In data views, select the Last Modified By field as a filter condition, then choose specific modifiers to find all entries they modified. - -### Important Notes - -* The Last Modified By field updates automatically, and users cannot manually change the value of this field. diff --git a/en/basic/field/advanced/last-modified-time.mdx b/en/basic/field/advanced/last-modified-time.mdx deleted file mode 100644 index 5728b101..00000000 --- a/en/basic/field/advanced/last-modified-time.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Last Modified Time" -description: "The Last Modified Time field is a special field that automatically records when a data entry was last updated. This field provides users with a timeline of data changes." ---- - -### Feature Details - -#### Dynamic View Display - -* Automatically Updated Timestamp: Whenever a data entry is modified, this field automatically updates to the current date and time. - -#### Data Filtering - -* Filter by Modification Time: Users can filter data based on the last modification time, helping to find data entries updated within specific time periods. - -#### Data Sorting - -* Sort by Modification Time: Ability to sort data entries based on their most recent modification time, making it easy to find the newest or oldest entries. - -### How to Use - -* **Automatic Recording**: This field is automatically filled and requires no manual user operation. The timestamp automatically updates to the current time whenever a data entry is modified. - -* **Filter and Sort**: In data views, select the Last Modified Time field for filtering or sorting to find or organize data entries. \ No newline at end of file diff --git a/en/basic/field/advanced/link.mdx b/en/basic/field/advanced/link.mdx deleted file mode 100644 index 56f20967..00000000 --- a/en/basic/field/advanced/link.mdx +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: "Link" -description: "Link fields are powerful tools in data management that allow users to establish relationships between different tables. Through link fields, users can easily insert records from other tables into the current table and quickly view and navigate to linked data tables." ---- - -## Creating Link Fields - -Open the table where you need to add a link field. Select "Add Field," then choose "Link Field." From the dropdown menu, select the table you want to link to. - -Select the link type: Open the table where you want to add a link field, click "Add Field," then select "Link Field." Choose the table you want to link to from the dropdown menu. - -One-way vs. Two-way Links: If you want data to update only in the current table, choose a one-way link. If you want both tables to reflect link changes, choose a two-way link. Two-way links create a symmetric link field in the linked table, and the data in both link fields is always mutually mapped. - -Define Link Relationship: Configure the current table field and corresponding link field, determining whether to **Allow Single Selection** or **Allow Multiple Selection**. Through the combination of configurations for both link fields, we can define the relationship between data, which is explained in detail below. - -## One-way vs. Two-way Links - -Users can choose whether to create two-way links based on their needs. - -### One-way Links - -Definition: A link created in one table does not automatically create a link in the other table. Example: Imagine following a celebrity on social media - you can see their updates, but they might not know who you are. - -### Two-way Links - -Definition: A link created in one table automatically creates a corresponding link in the other table. Example: Like Facebook friend requests - when you add someone as a friend, they also add you as a friend. - -## Link Relationships - -When building relationships in databases, we typically encounter several types of link relationships. These relationships help us better organize data and understand interactions between different tables. - -## Link Relationships and How to Establish Them -| Relationship Type | Description | Example | How to Create in Table A | -| ---------------- | ----------- | ------- | ----------------------- | -| One-to-One | One record in Table A links to only one record in Table B. | An author and their unique autobiography. | Single select in Table A + Single select in symmetric Table B field | -| One-to-Many | One record in Table A can link to multiple records in Table B. | An author and their multiple books. | Multiple select in Table A + Single select in symmetric Table B field | -| Many-to-One | Multiple records in Table A might link to one record in Table B. | Multiple authors with one common publisher. | Single select in Table A + Multiple select in symmetric Table B field | -| Many-to-Many | Multiple records in Table A can link to multiple records in Table B. | Multiple authors and multiple literary awards. | Multiple select in Table A + Multiple select in symmetric Table B field | - -### Relationship Examples Analysis - -To better understand these relationship types, let's use authors and their works as examples: - -1. **One-to-One Relationship**: If J.K. Rowling wrote only one autobiography, then there's a one-to-one relationship between her and this autobiography. -2. **One-to-Many Relationship**: J.K. Rowling wrote multiple books in the "Harry Potter" series. Here, there's a relationship between one author and multiple books. -3. **Many-to-One Relationship**: If we consider multiple authors like J.K. Rowling, George Orwell, and Jane Austen all working with one publisher "Classic Books," then the relationship between these authors and the publisher is many-to-one. -4. **Many-to-Many Relationship**: Suppose "International Literary Award" and "Best Author of the Year" are two awards, and both J.K. Rowling and George Orwell have won both awards. In this case, there's a many-to-many relationship between the two authors and the two awards. - -### Important Notes - -In a one-to-many relationship in Table A, the same record from Table B can only be selected once in Table A. In other words, once a record from Table B is selected as a linked record in Table A, that record will not appear in the selection list in Table A again. This is determined by the nature of the link relationship. - -**Example**: Suppose we have an "Authors" table (Table A) and a "Books" table (Table B). In the "Authors" table, there's a one-to-many relationship field for selecting books written by each author. Now, when we select "Harry Potter and the Philosopher's Stone" for one author, this book won't appear in the selection list for other authors because it's already linked to one author. This ensures each book can only be linked to one author, following the one-to-many relationship rules. - -## Further Extensions - -After setting up link fields, we can proceed with advanced lookup and rollup operations. These features work together to achieve powerful automatic data lookup and aggregation calculation capabilities. Please see the Lookup and Rollup Field sections for details. diff --git a/en/basic/field/advanced/lookup.mdx b/en/basic/field/advanced/lookup.mdx deleted file mode 100644 index 77fee88c..00000000 --- a/en/basic/field/advanced/lookup.mdx +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: "Lookup" -description: "A lookup field is an action for creating a field based on an existing link field. It allows you to reference specific data fields from another table through a link field. This not only enables cross-table data sharing but also ensures data consistency and integrity." ---- - -> Unlike other products, our "Lookup" is not a field type. Lookup is considered a special action here. When you create a lookup, you're actually creating a field of the same type as the field you're referencing, with data obtained from the linked records of that field. - -## Relationship Between Lookup Fields and Link Fields - -To use lookup fields, you first need to create a link field to connect two tables. Once the link is established, you can use lookup fields in one table to reference any field from the other table. - -## How to Create a Lookup Field - -Ensure you have created a link field between the two tables you want to connect. In the table where you want to add the lookup field, select "Add Field," then choose "Lookup." Based on the existing link field, select the source table and specific field you want to reference. - -## Lookup Field Use Cases and Examples - -Consider the following bookstore scenario: - -First, we have two tables: "Author Details" and "Books." - -### Author Details Table - -| Author Name | Birth Year | -| ---------------- | ---------- | -| Steve McConnell | 1960 | -| Martin Fowler | 1963 | -| Erich Gamma | 1961 | - -In this table, we list each author's birth year. - -### Books Table - -| Book Title | Author Link | Author Birth Year (Lookup Field) | -| ---------------- | ---------------- | ------------------------------- | -| "Code Complete" | Steve McConnell | 1960 | -| "Refactoring" | Martin Fowler | 1963 | -| "Design Patterns" | Erich Gamma | 1961 | - -In the Books table, when we select an author, the author birth year lookup field automatically displays the selected author's birth year: - -* For "Code Complete", we selected author Steve McConnell, whose birth year is 1960, so the author birth year lookup field shows 1960. - -* For "Refactoring", we selected author Martin Fowler, whose birth year is 1963, so the author birth year lookup field shows 1963. - -* For "Design Patterns", we selected author Erich Gamma, whose birth year is 1961, so the author birth year lookup field shows 1961. - -Through using lookup fields, we can easily display each author's birth year in the "Books" table without having to repeatedly enter or manually look up the data for each book. This is a very useful feature that allows us to avoid duplicate data entry, ensure data consistency and accuracy, and simplify the data management process. - -## Formatting and Interactive Display - -The data type, [formatting](/en/basic/field/common/formatter), and [interactive display](/en/basic/field/common/show-as) of lookup fields are determined by the referenced field. This means if you reference a date type field, the lookup field will also be treated as a date type and can be formatted accordingly. - -## Formulas and Rollup Calculations - -When lookup fields are used in formulas or rollup calculations, their data type is also determined by the referenced field. For example, if you use a lookup field in a formula that references a number type field, that lookup field will behave like a number in the formula. - -## Important Notes - -**Data Integrity:** Ensure that your source table and fields exist and are valid. Deleting source tables or fields may prevent lookup fields from displaying data correctly. Display Format: Lookup fields can have the same display format as the referenced field, meaning if you modify the data display format in the source table, it will be reflected in the lookup field. - -**Single Value vs. Multiple Values:** Referenced fields may change from single-value to multiple-value types due to many-to-one relationships. For example, a single select field might appear as a "multiple select" after being referenced due to multiple linked records. This is normal logic. Please see the [Single Value vs. Multiple Value chapter](/en/basic/field/common/is-multiple-value) for further understanding. - -## Conclusion - -Lookup fields provide an efficient, streamlined method for cross-table data referencing and display. This flexibility allows users to easily share and calculate data between different tables without complex data synchronization or conversion. Understanding this concept will help users use the product more flexibly and efficiently, maximizing their data management and automation capabilities. - diff --git a/en/basic/field/advanced/rollup.mdx b/en/basic/field/advanced/rollup.mdx deleted file mode 100644 index ede9d672..00000000 --- a/en/basic/field/advanced/rollup.mdx +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: "Rollup" -description: "Rollup fields allow you to perform aggregate calculations on data in linked tables, such as sum, average, count, etc. This feature is particularly useful for scenarios requiring summarization of related data for analysis and reporting." ---- - -{/* mintlify-resync: 2026-05-14 */} -## Relationship Between Rollup Fields and Link Fields - -Rollup fields depend on previously created link fields. Through link fields, rollup fields can "see" related records in another table and perform various calculations on them. - -## Formatting Rollup Data - -After performing rollups, you can not only get calculation results but also [format](../common/formatter) these results and configure [interactive displays](../common/show-as) to make them more readable and understandable. Formatting allows you to present rollup data in specific styles and formats, while interactive displays let you configure different UI and interaction options for calculation results. This not only makes data more readable but also helps ensure data consistency across different contexts and application scenarios. - -## How to Create a Rollup Field? - -1. In a table with a link field, select "Add Field," then choose "Rollup Field." -2. Select an existing link field to determine the data source for the rollup. -3. Choose the field you want to roll up, then specify the aggregation operation to perform (complete list of operations below). - -## Rollup Field Use Cases and Examples - -Let's say you're managing a bookstore database with two tables: - -**Table A**: Orders - -**Table B**: Books - -The Orders table records customer purchase information, while the Books table contains pricing for each book. - -If you want to sum up the total amount for each order, you can: - -1. Create a link field in the "Orders" table linking to the "Books" table. -2. Then, create a rollup field in the "Orders" table, selecting the link field created in the previous step. -3. Specify "SUM" as the rollup operation and select the price field from the "Books" table as the target for rollup. - -Let's look at two tables: a "Book Details" table and an "Orders" table. - -### Book Details Table - -| Book Title | Price | -| ---------------------- | ----- | -| "Code Complete" | $60 | -| "Design Patterns" | $40 | -| "Refactoring" | $50 | - -In this table, we list the price of each book. - -### Orders Table - -| Order No. | Books (Link Field) | Total Amount (Rollup Field) | -| --------- | ---------------------------------------- | -------------------------- | -| 001 | "Code Complete", "Design Patterns" | $100 | -| 002 | "Refactoring", "Design Patterns" | $90 | - -In the Orders table, when we select certain books, the rollup field automatically calculates the total price of the selected books: - -* For order 001, we selected "Code Complete" and "Design Patterns", priced at `$60` and `$40` respectively, so the total amount rollup field shows `$100`. -* For order 002, we selected "Refactoring" and "Design Patterns", priced at `$50` and `$40` respectively, so the total amount rollup field shows `$90`. - -Through this combination of link fields and rollup fields, we can easily automatically calculate the total amount for each order in the Orders table without manual input or calculation. - -## Supported Rollup Formulas - -| Formula Name | Explanation | -| -------------- | --------------------------------------------------------------------- | -| COUNTALL | Counts all values, including text values and blanks | -| COUNTA | Counts the number of non-empty values | -| COUNT | Counts the number of numeric items | -| SUM | Calculates the sum of all numeric values | -| MAX | Returns the maximum value among all numbers | -| MIN | Returns the minimum value among all numbers | -| AND | Returns true if all values are true | -| OR | Returns true if any value is true | -| XOR | Returns true if an odd number of values are true | -| ARRAY_JOIN | Joins all values in an array into a string | -| ARRAY_UNIQUE | Removes duplicates from an array and returns a new array with unique values | -| ARRAY_COMPACT | Removes all empty values from an array and returns a new array | -| CONCATENATE | Joins multiple values into a string | - -## Important Notes - -* **Performance Considerations**: Large numbers of rollup operations may affect performance, especially when dealing with many data records. The system will provide the fastest possible calculation speed, but periodically optimizing and reviewing your rollup settings can better ensure application write performance. -* **Rollup Formulas**: Rollup fields will automatically provide allowed rollup formulas based on the data type of your selected rollup field, so you won't always see all rollup formulas. - -## Conclusion - -Rollup fields are one of the powerful data analysis tools, reducing the burden of manual summarization and data updates through automated calculations. They provide a quick and flexible way to view and analyze aggregate information from related data. diff --git a/en/basic/field/advanced/user.mdx b/en/basic/field/advanced/user.mdx deleted file mode 100644 index 7211e48a..00000000 --- a/en/basic/field/advanced/user.mdx +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: "User" -description: "The User field provides a powerful tool that allows you to specify, identify, and classify participants in your projects." ---- - -### Data Filtering and Sorting - -* **Filter Participants**: You can use the User field to filter specific participants. This is particularly useful for finding all projects or tasks related to specific individuals. - -* **Multiple Filtering**: Combining filtering with other fields allows you to manage information more precisely, such as finding all tasks assigned to specific members within a particular department. - -### Dynamic View Display - -* **Current User-Based Filtering**: Using the User field, you can set up filters for [Current User] to dynamically display content based on the currently logged-in user. This means each user will see customized, relevant projects or tasks when they log in and access the system. - -### Data Association - -* **Project and User Association**: Through the User field, you can clearly identify which users are associated with which projects. This not only helps improve project transparency but also facilitates team collaboration. - -### Data Visualization - -* **Personalized Dashboards**: Combined with other features, the User field can be used to create customized dashboards for specific users or teams, displaying data and progress directly relevant to them. -* **User Kanban**: Combined with the Kanban view feature, a single-select User field can serve as a Kanban grouping item, allowing you to conveniently assign tasks to users through card dragging. - -### How to Use - -1. **Add User Field**: When creating or editing a data table, select User as the field type. -2. **Specify Participants**: In projects or tasks, click on the User field and select participants to associate from the dropdown list. -3. **Filter and Sort**: In the data view, use the filtering function to select the User field, then choose specific users you want to filter results by. diff --git a/en/basic/field/ai/ai-field.mdx b/en/basic/field/ai/ai-field.mdx index 7d2cb32a..d7bad5bb 100644 --- a/en/basic/field/ai/ai-field.mdx +++ b/en/basic/field/ai/ai-field.mdx @@ -3,138 +3,148 @@ title: "AI Fields" description: "AI fields can summarize text, classify tags, generate scores, or turn content into images." --- -Available on all Cloud plans; Self-Hosted requires Business or higher. +Available on all Cloud plans. Self-hosted deployments require the Business plan or higher. ## Main Use Cases -AI fields work well when you want to turn raw content into a directly usable result. Common examples include: - -- Summarize a paragraph of text -- Translate content into another language -- Extract key information from text -- Rewrite content to be shorter or more polished -- Automatically classify a single select field or tag a multiple select field -- Score a rating field or generate a new image from image-related content +AI fields generate the current field value from other fields in the same row. Use them to turn raw content into summaries, translations, extracted details, categories, scores, dates, or images. + + + + Summarize, translate, extract information, improve writing, or customize the output. Best for turning longer text into usable copy. + + + Smart classify or customize the output. Best for matching content to one existing category. + + + Smart tag or customize the output. Best for matching content to one or more existing tags. + + + Rate or customize the output. Best for generating scores or numeric results from source content. + + + Extract information or customize the output. Best for extracting dates or times from content. + + + Generate images or customize the output. Best for creating images from text or attachments. + + + +If you are not sure which action to use, start here: + + + + - **Summarize**: Creates a summary from the source field. + - **Translate**: Translates the source field into the target language. + - **Extract Information**: Extracts specific information from text. Date fields can also use it to extract dates or times. + + + - **Improve Writing**: Rewrites content based on your additional requirements. + - **Smart Classify**: Matches a single select field to an existing option. + - **Smart Tag**: Matches a multiple select field to existing options. + + + - **Rate**: Generates a score or numeric value from the source content. + - **Generate Image**: Creates images in an attachment field. Some models support using an attachment field as a reference image. + + + Use a custom prompt when the default actions do not cover your case. Custom prompts can reference fields from the same row. + + ## Workflow -### 1. Add the Field - -- Set the field name and field type first. -- Then open **AI Configuration** and choose the AI action that fits this field. -- Add source fields, instructions, and auto-update settings as needed. + + + Create a field, choose the field type, then expand **AI Configuration**. Each field type shows the AI actions it supports. + + + Choose the **AI Action Type** and **AI Model**. The action controls the task. The model controls which AI model generates the result. + + + Choose the field AI should read as input. The AI field generates its value from source fields in the same row. + + + Depending on the action, fill in **Additional Requirements**, **Target Language**, or a **Custom Prompt**. For image generation in attachment fields, use **Advanced Settings** to adjust image size, quality, count, aspect ratio, resolution, or reference images. Available settings depend on the selected model. + + Screenshot -- Common actions for text fields - - Summarize - - Translate - - Extract Information - - Improve Writing - - Customize -- Common actions for single select fields - - Smart Classify - - Customize -- Common actions for multiple select fields - - Smart Tag - - Customize -- Common actions for rating fields - - Rating - - Customize -- Common actions for date fields - - Extract Information - - Customize -- Common actions for attachment fields - - Generate Image +When you edit an AI field, you can change the action type, model, source fields, additional requirements, custom prompt, and auto-update setting. After you save, the new configuration applies to future generations. If an existing result is not what you want, regenerate it. Screenshot -### 2. Edit the Field +## Auto-update and Batch Generation -- Select the source fields. -- Add additional requirements. -- Choose the AI model. -- **Auto-update** - - When enabled, the result updates when the source content changes. +When **Auto-update** is enabled, the AI field updates with the current configuration when source field content or the AI configuration changes. Use it when the result should stay in sync with source content, such as categories, summaries, scores, or tags generated from feedback. -Screenshot +After you create a field or change its AI configuration, you can choose whether to process records in the current view right away: -After you click save, the AI field is ready to use, as shown below. + + + Generate content only for empty cells. Existing values are not overwritten. + + + Regenerate results for records in the current view. Existing values are overwritten. + + + Save the field configuration without writing values to cells. + + Screenshot -If the result is not what you want, you can regenerate it. +After you choose a generation option, Teable shows the task status while it processes records. Screenshot -#### Batch Shortcut - -Use **Update entire column** from the right-click menu to update a whole column at once. Whether it is available depends on the current view and permissions. - -## Action Types - -### Summarize - -Creates a summary from the source fields and your additional instructions. - -### Translate +To run generation later, use the field menu instead of saving the configuration again. -Translates content based on the source fields and your additional instructions. - -### Extract Information - -Extracts specific information from content based on the source fields and your instructions. - -For image or file input, make sure the target field uses the attachment type. - -### Improve Writing - -Rewrites content based on the source fields and your additional instructions. - -### Smart Classify - -- Single select fields can use Smart Classify. -- Multiple select fields can use Smart Tag. -- Both are useful for turning content into tags that are easy to browse and filter. +You can also right-click the field and choose **Generate** to run batch generation for the current view. Availability depends on the current view and your permissions. Screenshot -### Customize +## FAQ -Combine multiple fields and your own prompt to generate the result you want. + + + After you create a field or change its AI configuration, you can choose **Fill empty cells only**, **Generate entire column**, or **Save configuration only**. You can also batch generate later from the field right-click menu by choosing **Generate**. + -Screenshot + + Enable **Auto-update** if you want the AI field to update when source field content changes. If you want to control when generation runs, leave it off and use **Generate** when needed. + -In addition to Teable's built-in models, Teable also supports [third-party model APIs](/en/basic/ai/custom-model), which you can configure in space settings. + + AI actions depend on the field type. Text fields are suited for summarizing, translating, and extracting information. Single select fields are suited for Smart Classify. Multiple select fields are suited for Smart Tag. Attachment fields are suited for image generation. + -### Generate Image + + The model list comes from models provided by Teable and AI models configured in the current space. To use a third-party model, add a custom AI model in space settings first. + -Attachment fields can use **Generate Image** to create images from text fields, attachment fields, or a combination of both. + + Image size, quality, count, aspect ratio, resolution, and reference image options depend on the selected model. + + diff --git a/en/basic/field/attachment.mdx b/en/basic/field/attachment.mdx new file mode 100644 index 00000000..7aa74dc3 --- /dev/null +++ b/en/basic/field/attachment.mdx @@ -0,0 +1,75 @@ +--- +title: "Attachment" +description: "Store images, PDFs, documents, and other files in records, with support for preview, download, and batch download." +--- + +{/* mintlify-resync: 2026-05-14 */} +The **Attachment** field stores one or more files in a record. Common use cases include contracts, images, invoices, design files, resumes, reports, and images generated by AI fields. + +## Use Cases + +| Scenario | Good for | +| --- | --- | +| File archive | Contracts, invoices, reports, resumes, and other business files | +| Image and asset management | Product images, campaign assets, design files, screenshots | +| Form file collection | Resumes, reimbursement receipts, and files submitted by customers | +| AI image output | Image results generated by AI fields | + +## Create and Configure + + + + In a table, click `+` to add a field, then choose **Attachment**. + + + Enter a field name, such as "Files", "Images", or "Contract attachments". + + + After saving, each record can upload one or more files in this field. + + + +## Upload and View + +Attachment fields can store images, PDFs, documents, archives, and other file types. + +- **Upload files**: Click the attachment area in a cell or record detail, then choose local files to upload. +- **Store multiple attachments**: One attachment cell can contain multiple files. +- **Preview files**: Images and some file types can be previewed in the cell or record detail. +- **Download one attachment**: Open an attachment, then download the file. + + +Attachment fields store files, not plain text. When converting a text field to an attachment field, Teable cannot convert the original text into files. Check whether the data needs a backup before converting the field. + + +## Batch Download Attachments + +From the attachment field menu, you can download attachments from the current field as a ZIP file. The download scope follows the current table search results: + +- If no search is active, Teable downloads downloadable attachments in this attachment field. +- If the table is searching and hiding unmatched rows, Teable only downloads attachments from matching records. + +When downloading the ZIP, you can choose an attachment filename prefix: + +| Prefix option | Description | +| --- | --- | +| **Default index** | Uses a system-generated index as the prefix, which helps keep file order clear | +| **Select a field as prefix** | Uses another field value as the filename prefix, useful for organizing files by ID, customer name, or project name | +| **No prefix** | Keeps the original filename where possible | + +If duplicate filenames appear in the ZIP file, Teable adds suffixes so each filename stays unique. + +## Use with AI Fields + +AI fields can read attachments and write generated images to attachment fields. + +- **Read attachments**: In AI field settings, add the attachment field as an input field. Whether the AI field can recognize image or file content depends on the selected model. +- **Save images**: Set the AI field output to an attachment field. Generated images are saved to that field. + +For more information, see [AI Field](/en/basic/field/ai/ai-field). + +## Upload Attachments Through API + +The attachment upload API supports local file upload and URL-based upload. New attachments are appended to the end of the target attachment field in the specified record. + +See [Upload Attachment API](/en/api-doc/record/upload-attachment). diff --git a/en/basic/field/auto-number.mdx b/en/basic/field/auto-number.mdx new file mode 100644 index 00000000..e5373454 --- /dev/null +++ b/en/basic/field/auto-number.mdx @@ -0,0 +1,39 @@ +--- +title: "Auto Number" +description: "Generate increasing numbers when records are created. Useful for ticket numbers, order sequences, and internal IDs." +--- + +An **Auto Number** field automatically generates an increasing number for each record. After the field is created, Teable fills existing records and future records with numbers, so users do not need to maintain them by hand. + +## Use Cases + +| Scenario | Good for | +| --- | --- | +| Ticket numbers | Generate short IDs for issues, feedback, or support requests | +| Order and contract sequences | Create internal sequence numbers for orders, contracts, or applications | +| Member or candidate IDs | Assign base IDs to members, candidates, or employees | +| Conversation references | Refer to records with numbers such as `#45` in messages or comments | + +## Create and Configure + + + + Click the `+` icon on the right side of the table header, then choose **Auto Number** from the field type list. + + + Enter a field name, such as "Order ID", "Member ID", or "Ticket Number". + + + After the field is created, Teable fills sequence numbers for existing records and future records. + + + +## Field Behavior + +- **Auto-incrementing**: Each new record receives the next number in the sequence. +- **Read-only**: Auto numbers are record metadata. Users cannot edit specific values by hand. +- **Stable across views**: After a number is generated, it stays with the record. Sorting, filtering, and switching views do not change it. + +## Notes + +- Auto numbers only move forward. If record `3` is deleted, Teable does not reuse that number. The next new record continues with a later number. Gaps can appear in the sequence so references to historical records stay stable. diff --git a/en/basic/field/basic/attachment.mdx b/en/basic/field/basic/attachment.mdx deleted file mode 100644 index 9c765f1d..00000000 --- a/en/basic/field/basic/attachment.mdx +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: "Attachment" -description: "Store images, PDFs, documents, and other files in records, with support for preview, download, and batch download." ---- - -{/* mintlify-resync: 2026-05-14 */} -The **Attachment** field stores one or more files in a cell. Common use cases include contracts, images, invoices, design files, resumes, reports, or images generated by AI fields. - -## 1. Create an Attachment Field - -1. In a table, click `+` to add a field -2. Select the **Attachment** field type -3. Enter a field name, such as "Files", "Images", or "Contract attachments" -4. Click `Save` - -After creation, each record can upload one or more attachments in this field. - -## 2. Upload and View Attachments - -Attachment fields can store multiple file types, such as images, PDFs, documents, and archives. - -- **Upload files**: Click the attachment area in a cell or record detail, then select local files to upload. -- **Store multiple attachments**: One attachment cell can contain multiple files. -- **Preview files**: Images and some file types can be previewed in the cell or record detail. -- **Download a single attachment**: Open an attachment and download the corresponding file. - - -Attachment fields store files, not plain text. When converting a text field to an attachment field, the original text content cannot be converted into files automatically. Confirm whether the data needs to be backed up before converting the field. - - -## 3. Batch Download Attachments - -From the attachment field menu, you can batch-download attachments in the current field. - -Batch download creates a ZIP file and follows the current table search result scope: - -- If there is no active search, downloadable attachments in this attachment field are downloaded. -- If the table is searching and hiding non-matching rows, only attachments from matching records are downloaded. - -When downloading the ZIP, you can choose **Attachment name prefix**: - -| Prefix option | Description | -|------|------| -| **Default: attachment index** | Uses the system-generated attachment index as the prefix | -| **Select a field as prefix** | Uses the value of another field as the filename prefix | -| **No prefix** | Keeps the original filename where possible | - -If duplicate filenames appear in the ZIP, Teable automatically appends suffixes to keep filenames unique. - -## 4. Use with AI Fields - -AI fields can read attachments and save generated images to attachment fields. - -- **Read attachments**: In AI field settings, add the attachment field as an input field. Whether images or file contents can be recognized depends on the selected model. -- **Save images**: Set the AI field output to an attachment field. Generated images are saved to that attachment field. - -For more information, see [AI Field](/en/basic/field/ai/ai-field). - -## 5. Upload Attachments Through API - -The attachment upload API supports uploading local files or uploading files by URL, and appends new attachments to the end of the specified record's attachment field. - -See [Upload Attachment API](/en/api-doc/record/upload-attachment). diff --git a/en/basic/field/basic/checkbox.mdx b/en/basic/field/basic/checkbox.mdx deleted file mode 100644 index bcabd2f3..00000000 --- a/en/basic/field/basic/checkbox.mdx +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: "Checkbox" -description: "Checkbox fields provide a clear way to mark the status of a record, such as whether it's completed or selected. They add a distinct binary state to your data, making it particularly easy to track and manage these states." ---- - -## Creating Checkbox Fields - -When you want to add a clear yes/no, complete/incomplete, or any other binary state to your table, a checkbox field is an ideal choice. To add such a field, follow these steps: - -* Click the "Add Field" button in your table view. -* Name the new field and select "Checkbox" as the field type from the dropdown menu. - -## Use Cases - -### Task Tracking - -Checkbox fields are perfect for task management and project tracking, allowing you to easily mark tasks as completed. - -### Data Validation - -When conducting data audits or reviews, checkbox fields can help you mark which data has been reviewed or verified. - -### Selection Options - -If you're creating a survey or form and want users to select certain options, checkbox fields are an excellent choice. - -## Interaction with Other Fields - -### Using Formula Fields for Counting - -You can use formula fields to count the number of checked records, which is particularly useful when tracking completed tasks or audited data. - -### Combining with Date Fields - -When used in conjunction with date fields, checkbox fields can represent the completion status of a task or activity, while the date field shows when it was completed. diff --git a/en/basic/field/basic/date.mdx b/en/basic/field/basic/date.mdx deleted file mode 100644 index fbf5edf5..00000000 --- a/en/basic/field/basic/date.mdx +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: "Date" -description: "Store dates and times with support for date format, time format, time zone, and auto-fill with the current time." ---- - -**Date** fields store specific points in time. They work well for project deadlines, meeting times, employee start dates, and similar data. They can also display time down to the minute, such as `2025-11-03 14:30`. - -## Setup - -### Adding a Date Field - -1. In table view, click **Add Field**. -2. Name the field and choose **Date** as the field type from the dropdown. - -### Date Field Options - -- **Include time**: Add time information in addition to the date. -- **Time zone**: Choose a specific time zone for dates and times. This matters when working across regions or teams. -- **Formatting options**: Date fields support multiple display formats, for example: - - `YYYY-MM-DD` (for example: 2023-11-03) - - `DD/MM/YYYY` (for example: 03/11/2023) - - `MM/DD/YYYY` (for example: 11/03/2023) - - `D MMM YYYY` (for example: 3 Nov 2023) - - ...and [many other format options](/en/basic/field/common/formatter) - -## Use Cases - -- **Project management**: Set clear start and end dates for tasks. -- **Event planning**: Record dates and times for upcoming meetings or events. -- **Timeline analysis**: Sort and analyze time-based data such as sales trends or user activity. -- **Used with formulas**: Combine date fields with formula fields to calculate intervals or future dates. - -## Features - -- **Auto-fill current time**: When enabled, new records automatically get the current time. - - -**Tip**: -If you need to record when a record was created and the value should not be editable, do not use a **Date** field. Use **[Created Time](/en/basic/field/advanced/created-time)** instead. - diff --git a/en/basic/field/basic/long-text.mdx b/en/basic/field/basic/long-text.mdx deleted file mode 100644 index c2c8230a..00000000 --- a/en/basic/field/basic/long-text.mdx +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: "Long Text" -description: "Store long text with line breaks, with support for both plain text and Markdown display." ---- - -**Long Text** fields are designed for longer, multi-paragraph content. They work well for notes, descriptions, logs, and detailed explanations. - -Unlike single-line text, they support line breaks to organize content. You can also switch the display mode to Markdown when you want the content to be easier to read. - -## Setup - -### Create a Long Text Field - -- **Steps**: - 1. Click `+` in the table. - 2. Choose **Long Text** as the field type. - 3. Enter a field name such as "Description," "Notes," or "Details." - 4. Configure the field options as needed. - 5. Click `Save`. - -### Field Options - -- **Default value**: Pre-fill new records with default text. -- **Display mode**: Switch between plain text and Markdown. -- **Field description**: Add a short explanation to help your team understand the field. - -## Use Cases - -- **Detailed descriptions**: Task details, product descriptions, bug reproduction steps. -- **Logs and notes**: Customer follow-ups, daily summaries, meeting notes. -- **Supporting context**: Extra information that should not be split into separate fields. - -## Features - -### Line Breaks - -- **Manual line breaks**: Press `Shift + Enter` while editing to insert a line break. -- **Automatic wrapping**: Cell height adjusts with column width so long text stays readable. -- **Markdown**: Use Markdown display for headings, lists, and links. - -Long Text - -## Notes - -- Long Text does not support URL, Email, or Phone interactive display. It only supports plain text and Markdown. diff --git a/en/basic/field/basic/multiple-select.mdx b/en/basic/field/basic/multiple-select.mdx deleted file mode 100644 index 07721df2..00000000 --- a/en/basic/field/basic/multiple-select.mdx +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: "Multiple Select" -description: "Choose one or more values from a predefined list. Useful for tags, categories, and multi-dimensional filtering." ---- - -## Setup - -1. **Add options** - - Enter an option name in the setup panel and press **Enter** to add it quickly. - - The system assigns colors automatically, and you can adjust them manually if needed. - - Drag the handle on the left side of an option to reorder it. - -2. **Default values and editing rules** - - You can set default values so new records start with common tags already selected. - - You can control whether users are allowed to create new options while editing. If this is turned off, they can only choose from the existing options. - -3. **Color management** (Optional) - - Click the colored dot next to an option name to choose a color from the built-in palette. - - Clear color choices make categories easier to scan in views such as kanban or calendar. - -## Use Cases - -- **Tags or keywords**: A content item might belong to multiple topics such as "Technology," "Design," and "Marketing." -- **Skills or capabilities**: A person can have multiple skills such as "Programming," "Project Management," and "Public Relations." -- **Departments involved**: A project can involve several departments, such as "Sales," "R&D," and "Finance." - -## Features - -- **Flexible filtering**: Multiple Select supports richer filter logic, for example: - - **Contains any of**: Show records that include at least one selected option. - - **Contains all of**: Show only records that include every selected option. - - **Exactly equals**: The selected options must match exactly, with no more and no fewer. -- **Compared with Single Select**: Single Select allows exactly **1** value, while Multiple Select allows **1 to N** values. -- **Visual scanning**: Option colors make records easier to identify and categorize in the table. -- **Default values**: You can preset a common group of tags for new records to reduce repetitive selection. diff --git a/en/basic/field/basic/number.mdx b/en/basic/field/basic/number.mdx deleted file mode 100644 index 28dde482..00000000 --- a/en/basic/field/basic/number.mdx +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: "Number" -description: "Store numeric data such as prices, inventory, quantities, and ratios. Supports decimals, currency, percentage, and visual displays." ---- - -Number fields do more than store raw numbers. They can also be used directly for analysis and presentation. - -## Setup - -### Create a Number Field - -- **Steps**: - 1. Click the `+` at the right side of the table header and choose **Number** from the field type list. - 2. Enter a field name such as "Price" or "Inventory." - 3. **Format**: Choose how the value should be displayed based on your use case. - - **Number**: Plain numeric display, suitable for counts such as `100` or `2.5` - - **Currency**: Adds a currency symbol automatically, suitable for amounts such as `$100.00` - - **Percentage**: Displays the value as a percentage, suitable for ratios such as `50%` - -Set Formatting - - 4. **Precision**: Set the number of decimal places to keep. - - You can choose from **0** to **4** decimal places. - - Displayed values are rounded according to the selected precision. - -Set Precision - - 5. **Default value** (Optional): New records can be pre-filled with a number. - -### Display Settings - -In addition to plain numbers, Number fields can show values visually. - -- **Steps**: - 1. Open the **Display Mode** section in field settings. - 2. **Default**: Shows the numeric value as text only. - 3. **Single-value fields**: Can be shown as a **Bar** or **Ring**. - - **Target value**: Sets the value that fills the chart completely. - - **Color**: Choose the chart color. - - **Show number**: Displays the numeric value next to the chart. - 4. **Multi-value fields**: Can be shown as a **Bar** or **Line**. - -Set Display Mode - -## Use Cases - -### Scenario 1: Contract Amounts in Finance - -- **Table context**: Contract management table -- **Scenario**: Record each contract amount with cent-level precision and a currency symbol -- **Steps**: - 1. Create a field named "Contract Amount" - 2. Choose **Currency** and select the `$` symbol - 3. Set precision to **2 decimal places** (for example: `$1,000.00`) - -### Scenario 2: Sales Performance Achievement Rate - -- **Table context**: Sales performance table -- **Scenario**: Show how close each person is to the target -- **Steps**: - 1. Create a field named "Achievement Rate" - 2. Choose **Percentage** - 3. Set the display mode to **Bar** - 4. Set the target value to **1** (that is, 100%) and use green as the bar color - -## Features - -Number fields support the following: - -- **Automatic validation**: Only integers and decimals are accepted, such as `12` and `3.14`. -- **Flexible formatting**: Supports standard number, currency, and percentage display. -- **Visual display**: Can show values as a bar, ring, or line for faster scanning. -- **Works with derived values**: If a formula, rollup, or lookup result is numeric, it can use the same formatting options. - -## Notes - -- Percentages are stored as decimals. For example, entering `100%` stores `1`, and entering `50%` stores `0.5`. diff --git a/en/basic/field/basic/rating.mdx b/en/basic/field/basic/rating.mdx deleted file mode 100644 index 90c6e778..00000000 --- a/en/basic/field/basic/rating.mdx +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: "Rating" -description: "Rating fields provide a simple way to add numerical ratings to records. This field type is commonly used for rating products, services, or other items, allowing users to quickly perform qualitative analysis of data." ---- - -## Creating Rating Fields - -When you want to add rating data to a table, you can choose to add a rating field. Here's how: - -* Click the "Add Field" button in the table view. -* Name the field and select "Rating" as the field type from the dropdown menu. - -## Configuration Options - -### Maximum Value Setting - -You can set the maximum value for ratings, such as common 5-star or 10-star ratings. This maximum value determines the range of ratings users can choose from. - -### Display Icons - -By default, rating fields use star icons for display, but depending on your needs, you can choose other icons or symbols. - -## Use Cases - -### Product Reviews - -If you're running an online store or app store, rating fields can help you quickly see user ratings for each product, helping you understand which products are popular. - -### Service Quality Feedback - -For service-based businesses, you can use rating fields to collect customer feedback on your services, making it easy to identify areas that need improvement. - -### Employee Performance Evaluation - -Rating fields can also be used for internal employee performance evaluations, allowing managers to quickly rate employee performance. - -## Using with Other Fields - -### Comment Fields - -Combined with long text fields as comment fields, users can provide specific feedback or suggestions along with their ratings. - -### Average Rating Formula - -Using formula fields, you can calculate a comprehensive average score based on multiple rating fields, which is useful for considering evaluations from multiple aspects. - -## Important Notes - -1. Rating fields should be used in conjunction with other fields like comment fields, so you can get both quantitative ratings and qualitative feedback. -2. When setting the maximum rating value, ensure it aligns with your business or cultural context, as the interpretation of ratings may vary in different regions. diff --git a/en/basic/field/basic/single-line-text.mdx b/en/basic/field/basic/single-line-text.mdx deleted file mode 100644 index 12a626aa..00000000 --- a/en/basic/field/basic/single-line-text.mdx +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: "Single Line Text" -description: "Use a text field when you need to input short text values in a table." ---- -Screenshot - -When inputting, you can directly type text after clicking a cell with your mouse, or use common text editing operations like cut, copy, and paste. - -The input text content can be used for filtering and sorting, and supports text processing functions for operations like extraction. Users can also conveniently set default values for text fields to reduce repetitive input. - -### Interactive Display - -Text fields support four common interactive display modes: - - - - This is the default display format and most commonly used. The displayed text has no additional features. - - - - Text displayed as a URL will launch the user's default browser and automatically visit that web address when clicked. - - - - Text displayed as an Email will launch the user's default email application (such as Outlook, Mail, etc.) when clicked. - - - - Text displayed as a phone number will launch the user's default communication application (such as Facetime, Skype, etc.) when clicked. - - - -### Setting Display Mode - -1. Right-click the single-line text field -2. Select Edit Field -3. Choose the corresponding format in the opened Edit Field dialog and save - -Screenshot - -Interactive display can be used not only in single-line text fields but also in formula fields, rollup fields, and references. For details, please see [Interactive Display](/en/basic/field/common/show-as) - diff --git a/en/basic/field/basic/single-select.mdx b/en/basic/field/basic/single-select.mdx deleted file mode 100644 index 1988b7d8..00000000 --- a/en/basic/field/basic/single-select.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: "Single Select" -description: "Choose one option from a predefined list. Useful for statuses, categories, and priorities." ---- - -## Setup - -Using predefined options helps avoid typos from manual input and keeps data consistent. - -### 1. Add Options - -- **Steps**: - 1. Click the `+` icon at the right side of the table header and choose **Single Select**. - 2. Enter the field name. - 3. Type an option name and press **Enter** to create it quickly. - 4. If needed, set a default value so new records start with a common option. - -### 2. Colors and Option Order - -- **Colors**: Click the colored dot next to an option name to choose its color. -- **Order**: Drag the handle on the left side of an option to reorder the dropdown list. -- **Edit and delete**: Editing an option name updates existing records automatically. Use the trash icon to remove an option. -- **Allow creating new options**: You can control whether users are allowed to create new options while editing. If this is off, input must come from the existing option list. - -## Use Cases - -### Scenario 1: Project Progress in Kanban View - -- **Scenario**: Clearly show each task stage and support drag-and-drop status changes. -- **Steps**: - 1. Create a "Task Status" field with options such as **Not Started** (gray), **In Progress** (blue), and **Completed** (green). - 2. Create a **Kanban View** based on this field. Tasks are grouped into columns automatically, and dragging a card between columns updates its status. - -### Scenario 2: Customer Priority Grouping - -- **Scenario**: Classify customers by importance so high-value customers can be followed up first. -- **Steps**: - 1. Create a "Priority" field with options such as **High** (red), **Medium** (yellow), and **Low** (green). - 2. In table view, click **Group** and group by "Priority" to review each customer segment separately. - ---- - -## Features - -- **Single value only**: A cell can contain only **1** option, which keeps mutually exclusive states consistent. -- **Visual scanning**: Colors help users understand the value without reading every label. -- **Core view dimension**: Single Select is the required field type for **Kanban View** and one of the most common ways to **group** and **filter** data. -- **Data consistency**: Compared with text fields, Single Select limits the possible values and reduces data errors caused by typos. -- **Default value**: You can preset a common status for new records to reduce repeated selection. - ---- - -## Notes - -- **Difference from Multiple Select**: Single Select allows only **1** value per record. If a record needs multiple tags, use **Multiple Select** instead. -- **Type conversion risk**: Converting a **Multiple Select** field into **Single Select** may drop data. If a record currently has multiple options, the system usually keeps only the first one. diff --git a/en/basic/field/button-practical-guide.mdx b/en/basic/field/button-practical-guide.mdx new file mode 100644 index 00000000..bd189ac0 --- /dev/null +++ b/en/basic/field/button-practical-guide.mdx @@ -0,0 +1,109 @@ +--- +title: "Button Practical Guide" +description: "Use a Button field to trigger automations and turn fixed workflows, such as lead conversion or task reminders, into one click." +--- + +Button fields are useful for fixed, repeated workflows that should run after a person confirms the action. Common examples include converting a lead to an opportunity, scheduling approved content, sending task reminders, or syncing the current record to an external system. + +This guide uses lead conversion as the main example and shows how to connect a button to an automation. + +## Use Cases + +| Scenario | What the button can do | +| --- | --- | +| Lead conversion | Create a record in the opportunities table and mark the original lead as converted | +| Content scheduling | Create a publishing schedule and notify the teammate responsible for publishing | +| Task reminders | Send an email or team message to the assignee | +| External system sync | Send the current record to another system through an HTTP request | + +## Example: Convert a Lead to an Opportunity + +In a CRM table, a sales rep clicks the "Convert to opportunity" button after deciding that a lead is ready. The automation completes two actions: + +- Create a new record in the opportunities table with key information such as company and contact. +- Update the original lead status in the leads table to "Converted". + +### Prepare the Tables + +This example uses two tables: + +| Table | Purpose | Example fields | +| --- | --- | --- | +| Leads table | Stores leads to follow up. This is where the button field is created | Company name, contact, owner, status | +| Opportunities table | Stores converted opportunities | Opportunity name, related customer, owner, source lead | + +### Create the Button Field + +Add a button field in the leads table: + + + + Create a field and choose **Button** as the field type. + + + Set the button text to "Convert to opportunity" and choose a color that is easy to recognize. + + + To avoid accidental clicks, enable **Confirm before click** and fill in the dialog title, message, and confirm-button text. + + + +### Configure Automation Actions + +After creating the button field, configure the automation that runs when the button is clicked. + + + + In the button field settings, click **Custom automation** and create a workflow. + + + Add a **Create record** action and choose the opportunities table as the target table. + + + Write key lead fields into the new opportunity. For example: + - `Opportunity name` = `Company name` from the triggering record + - `Related customer` = `Contact` from the triggering record + - `Owner` = `Owner` from the triggering record + + + Add an **Update record** action. Choose the leads table as the target table, use the triggering record ID as the record ID, and update `Status` to "Converted". + + + +After saving the automation, the sales rep can click "Convert to opportunity" to create the opportunity and update the original lead status. + +### Add Notifications + +If a sales manager or opportunity owner needs to be notified after conversion, add a **Send email** action or a team message action to the automation. + +Common settings: + +- **Recipient**: A fixed email address, or a user field from the current record. +- **Subject and body**: Insert field values from the triggering record, such as company name, owner, or lead source. + +Example email body: + +> New opportunity converted: [Company name] was converted by [Owner]. Please follow up. + +### Connect External Systems + +If converted opportunities also need to be synced to a CRM, finance system, or internal tool, add an HTTP request action to the automation. + +HTTP requests work best when the target system has a stable API. Before configuring the action, confirm the endpoint, request method, authentication method, and field format. + +### Limit Duplicate Clicks + +Lead conversion usually should not happen more than once for the same lead. Enable **Limit number of clicks** in the button field: + +| Setting | Recommendation | +| --- | --- | +| Max clicks | Set to `1` | +| Allow reset | Usually keep this off to avoid duplicate opportunities | + +After the click limit is reached, the button on that record becomes disabled. + +## Notes + +- Whether a button click runs successfully depends on whether the linked automation is enabled and working. +- Each successful automation trigger counts toward the workspace automation run quota. +- If the button changes important data, enable click confirmation and limit the number of clicks. diff --git a/en/basic/field/button.mdx b/en/basic/field/button.mdx new file mode 100644 index 00000000..496c4663 --- /dev/null +++ b/en/basic/field/button.mdx @@ -0,0 +1,54 @@ +--- +title: "Button" +description: "Add a clickable button to each record and use it to trigger an automation." +--- + +The Button field adds a clickable button to each record. When someone clicks the button, Teable can trigger a configured automation, such as updating a record, creating a record, sending a message, or calling an external system. + +## Use Cases + +| Scenario | Suitable actions | +| --- | --- | +| Status workflow | Start work, complete a task, submit for approval, archive a record | +| Data workflow | Convert a lead to an opportunity, create a task from a request, write the current record to another table | +| Notifications | Send email, team messages, or reminder notifications | +| External integrations | Connect to external systems through an HTTP action in an automation | + +## Create and Configure + + + + Create a field in the table and choose the **Button** type. + + + Customize the button text and color, such as "Send email", "Submit for approval", or "Generate report". + + + Enable **Limit number of clicks** or **Confirm before click** when needed. + + + Click **Custom automation** and set the actions that should run after the button is clicked. + + + +## Settings + +| Setting | Description | +| --- | --- | +| Button text and color | Controls how the button appears in the cell | +| Limit number of clicks | Sets the maximum click count for each record, with an optional reset setting | +| Confirm before click | Shows a confirmation dialog before running the button action | +| Custom automation | Configures the automation triggered by the button | + +## Common Uses + +- **Status workflow**: Click "Complete task" to update the current record status to "Completed". +- **Lead conversion**: Click "Convert to opportunity" to create a record in the opportunities table and update the lead status. +- **Send reminders**: Click "Send reminder" to send an email or team message. +- **External system integration**: Use an HTTP action in the automation to sync the current record to another system. + +## Notes + +- Each successful button click that triggers an automation counts toward the workspace automation run quota. +- Permission to click a button is separate from permission to edit a record. If users can see the button, they may be able to click it and trigger the workflow, including read-only users or visitors with a shared link. +- A button does not perform actions by itself. It depends on the linked automation. If the automation is disabled or deleted, clicking the button has no effect. diff --git a/en/basic/field/checkbox.mdx b/en/basic/field/checkbox.mdx new file mode 100644 index 00000000..a4d6953f --- /dev/null +++ b/en/basic/field/checkbox.mdx @@ -0,0 +1,56 @@ +--- +title: "Checkbox" +description: "Store binary states such as yes/no or done/not done." +--- + +A **Checkbox** field records a binary state, such as yes/no, on/off, or done/not done. Users can click a cell to switch between checked and unchecked. + +## Use Cases + +| Scenario | Good for | +| --- | --- | +| Task completion | Done, processed, archived | +| Quick flags | VIP, blocked, needs restock | +| Process checkpoints | Image uploaded, copy reviewed, approval passed | +| Automation triggers | Send a notification, update a status, or start the next step after a box is checked | + +## Create and Configure + + + + Click the `+` on the right side of the table header, then choose **Checkbox** from the field type list. + + + Enter a field name, such as "Done", "VIP", or "Approved". + + + Choose whether new records should be checked or unchecked by default. + + + After saving, users can click cells to switch the state. + + + +## Common Uses + +- **Task status**: Use a "Done" field in a task table, then create an "Incomplete tasks" view that only shows unchecked records. +- **Quick flags**: Mark "VIP" in a customer table or "Needs restock" in an inventory table. +- **Process checkpoints**: Add fields such as "Image uploaded" or "Copy reviewed" in a content calendar so collaborators can see which steps are complete. + +## Use Checkbox Values in Formulas + +Checkbox fields can be used as boolean values in formulas. For example, return different text based on completion status: + +```js +IF({Done}, "Done", "In progress") +``` + +## Statistics and Automation + +- **Track completion**: Use the summary bar to count checked values. With counts, you can calculate completion rates. +- **Trigger automation**: When "Approved" is checked, automation can send an email or update other fields. + +## Notes + +- A Checkbox field only represents two states. If you need several states, such as "Not started", "In progress", and "Done", use a **Single Select** field. +- Use Checkbox fields for clear switches. Do not use them for notes, reasons, or explanations. diff --git a/en/basic/field/common/formatter.mdx b/en/basic/field/common/formatter.mdx index 1fa31cbb..6d1f95d9 100644 --- a/en/basic/field/common/formatter.mdx +++ b/en/basic/field/common/formatter.mdx @@ -1,48 +1,49 @@ --- title: "Formatting" -description: "Teable provides various formatting options, including number formatting, date/time formatting, and text formatting, to ensure data is displayed appropriately in different contexts." +description: "Control how field values appear, such as decimal places, percentages, currency symbols, date formats, and time formats." --- +Formatting controls how field values appear. It does not change the field's raw data. It only changes what users see in the table, such as decimal places, percentages, currency symbols, date formats, and time formats. + ## Number Formatting -When working with numerical data, we sometimes want to display it in specific ways. Teable offers the following number formatting options: +Number fields can use display formats that match your work: -* **Decimals**: You can choose how many decimal places to display, ranging from 0 to 5. -* **Percentage**: Convert numbers to percentage format. For example, 0.25 will be displayed as 25%. -* **Currency**: You can add currency symbols like "$" to numbers and select the number of decimal places. +| Format | Description | +| --- | --- | +| Decimal | Set how many decimal places to show | +| Percentage | Show a number as a percentage, such as `0.25` as `25%` | +| Currency | Add a currency symbol and set decimal places | ## Date and Time Formatting -In Teable, you can choose from various date and time display formats: - -* **Date Formats**: Based on your preference, you can select from the following date formats: - * US Style: e.g., 12/31/2023 - * European Style: e.g., 31/12/2023 - * Asian Style: e.g., 2023/12/31 - * ISO Standard: e.g., 2023-12-31 - * Year-Month Only: e.g., 2023-12 - * Month-Day Only: e.g., 12-31 - * Year Only: e.g., 2023 - * Month Only: e.g., 12 - * Day Only: e.g., 31 -* **Time Formats**: Teable provides multiple time format options: - * 24-hour format: e.g., 23:59 - * 12-hour format (with AM/PM): e.g., 11:59 PM - * No time display -* **Timezone Selection**: You can choose the appropriate timezone based on your location to ensure accurate time representation. - -These formatting options ensure you can select the most suitable date and time display format according to your preferences and requirements. - -## Field Basic Data Type List -| Teable Field Type | Basic Data Type | Supports Formatting | Dynamic Type Flag | -| ---------------- | --------------- | ------------------ | ----------------- | -| SingleLineText | Text | No | No | -| LongText | Text | No | No | +Date and time fields can set the date format, time format, and timezone. + +| Setting | Example | +| --- | --- | +| US style | `12/31/2023` | +| European style | `31/12/2023` | +| Asian style | `2023/12/31` | +| ISO standard | `2023-12-31` | +| Year and month only | `2023-12` | +| Month and day only | `12-31` | +| Year only | `2023` | +| Month only | `12` | +| Day only | `31` | + +Time formats support 24-hour time, 12-hour time, or no time display. Timezones can use a fixed timezone or follow the viewer's location. + +## Field Basic Data Types + +| Teable field type | Basic data type | Supports formatting | Dynamic type flag | +| --- | --- | --- | --- | +| Single line text | Text | No | No | +| Long text | Text | No | No | | User | Text | No | No | | Attachment | Text | No | No | | Checkbox | Boolean | No | No | -| MultipleSelect | Text | No | No | -| SingleSelect | Text | No | No | +| Multiple select | Text | No | No | +| Single select | Text | No | No | | Date | Date | Yes | No | | Number | Number | Yes | No | | Duration | Number | Yes | No | @@ -51,13 +52,15 @@ These formatting options ensure you can select the most suitable date and time d | Rollup* | Dynamic | Yes* | Yes | | Count | Number | Yes | No | | Link | Text | No | No | -| CreatedTime | Date | Yes | No | -| LastModifiedTime | Date | Yes | No | -| CreatedBy | Text | No | No | -| LastModifiedBy | Text | No | No | -| AutoNumber | Number | Yes | No | +| Created time | Date | Yes | No | +| Last modified time | Date | Yes | No | +| Created by | Text | No | No | +| Last modified by | Text | No | No | +| Auto number | Number | Yes | No | | Button | Text | No | No | -> Rating fields are displayed as interactive rating bars represented by a series of icons that can be illuminated. While they can't participate in number formatting, they are inherently numeric and can be used in numerical calculations. -> Formula and Rollup field formatting depends on their output type. This means if a formula or rollup results in a date or number type, it can be formatted. If the result is text or boolean, formatting is not applicable. -> All fields can be referenced, and when referenced, they maintain their basic value type. +## Notes + +- Rating fields show an interactive rating bar. They do not use number formatting, but they are still number fields and can be used in numeric calculations. +- Formula and rollup formatting depends on the output type. If the result is a date or number, it can be formatted. If the result is text or boolean, formatting does not apply. +- Referenced fields still follow the basic value type of the original field. diff --git a/en/basic/field/common/is-multiple-value.mdx b/en/basic/field/common/is-multiple-value.mdx index c215ae95..0f854174 100644 --- a/en/basic/field/common/is-multiple-value.mdx +++ b/en/basic/field/common/is-multiple-value.mdx @@ -1,78 +1,62 @@ --- -title: "Single Value vs Multiple Values" -description: "In table field design, you may have noticed the concepts of 'single value' and 'multiple values'. These describe whether a cell in a field stores a single value or a series of values (array). Each field type can exist in either single or multiple value states, and understanding these concepts is crucial for advanced usage." +title: "Single Value and Multiple Values" +description: "Explains whether a field cell stores one value or a group of values." --- -## Basic Concepts: Single vs Multiple Values +Single value and multiple values describe whether a cell stores one value or a group of values. After you understand this concept, it is easier to see why links, lookups, rollups, and formulas may return multiple results. -* **Single Value**: A single, definite piece of information. For example, "today's date" or "John's phone number". -* **Multiple Values**: Array values, a series of information. For example, "all dates this month" or "all of John's phone numbers". +## Basic Concepts + +| Type | Description | Example | +| --- | --- | --- | +| Single value | One definite piece of information | "today's date", "John's phone number" | +| Multiple values | A group of values, also understood as an array | "all dates this month", "all of John's phone numbers" | ## Default Single and Multiple Value States -| Field Name | Description | Default State | -| ---------- | ----------- | ------------- | -| SingleLineText | Single Line Text | Single | -| LongText | Long Text | Single | -| User | User | Optional* | -| Attachment | Attachment | Multiple | -| Checkbox | Checkbox | Single | -| MultipleSelect | Multiple Select | Multiple | -| SingleSelect | Single Select | Single | -| Date | Date | Single | -| Number | Number | Single | -| Duration | Duration | Single | -| Rating | Rating | Single | -| Formula | Formula | Dynamic* | -| Rollup | Rollup | Dynamic* | -| Count | Count | Single | -| Link | Link | Optional* | -| CreatedTime | Created Time | Single | -| LastModifiedTime | Last Modified Time | Single | -| CreatedBy | Created By | Single | -| LastModifiedBy | Last Modified By | Single | -| AutoNumber | Auto Number | Single | -| Button | Button | Single | - -## State Changes Due to Links and References - -While most fields have their default single or multiple value states, these states can change due to linking and referencing mechanisms. - -* **Impact of Link Fields**: If a link field is multiple-valued, all fields referenced through this link field will become multiple-valued. - **Example**: Imagine you have a "Tasks" table and an "Employees" table. If a task can be completed by multiple employees, the link field in the "Tasks" table connecting to the "Employees" table will be multiple-valued. Consequently, any fields referenced through this link (such as employee phone numbers) will also become multiple-valued. -* **Formulas and Rollups**: Although they are typically single-valued, formulas can become multiple-valued when they reference multiple-value fields. Similarly, they can become multiple-valued when referenced through multiple-value link fields. - **Example**: Suppose you have a formula field calculating each employee's total salary. If this formula references a multiple-value salary field (e.g., salaries for different projects), the formula field will also become multiple-valued. - -## Examples - -Understanding the distinction between single and multiple values is crucial for advanced users. It helps users understand why certain fields might contain multiple values and guides them in properly setting up and using these fields. - -### Employee Information and Project Tasks - -Consider managing a company using Teable with two tables: `Employee Information` and `Project Tasks`. - -1. **Employee Information** table: +| Field type | Default state | +| --- | --- | +| Single line text, long text | Single | +| Single select, checkbox, date, number, rating | Single | +| Created time, last modified time, created by, last modified by, auto number, button | Single | +| Multiple select, attachment | Multiple | +| User | Optional | +| Link | Optional | +| Formula, rollup | Dynamic | + +Here, "default state" means the field's common state on its own. **Optional** means you can decide whether the field is single-value or multiple-value through field settings. **Dynamic** means the result depends on formula logic, rollup functions, and whether referenced fields are multiple-value fields. After a value passes through a link, lookup, rollup, or formula reference, its state may change. + +## State Changes from Links and References + +- **Link fields**: If a link field is multiple-value, fields referenced through that link may also become multiple-value. For example, if one task can be assigned to several employees, looking up employee phone numbers through that link may return several phone numbers. +- **Formulas and rollups**: Formulas and rollups are often single-value, but they may become multiple-value when they reference multiple-value fields. + +### Example + +Suppose you manage a company in Teable with two tables: `Employee Information` and `Project Tasks`. + +**Employee Information table** | Name | Phone | Email | Tasks | -| ---- | ----- | ----- | ----- | -| John | 123456 | john@company.com | Task1, Task2 | -| Mary | 789012 | mary@company.com | Task3 | +| --- | --- | --- | --- | +| John | 123456 | john@company.com | Task 1, Task 2 | +| Mary | 789012 | mary@company.com | Task 3 | -2. **Project Tasks** table: +**Project Tasks table** -| Task Name | Assigned To | Due Date | Progress | -| --------- | ----------- | -------- | -------- | -| Task1 | John | 2023-11-20 | 50% | -| Task2 | John | 2023-12-01 | 30% | -| Task3 | Mary | 2023-11-15 | 80% | +| Task name | Assignee | Due date | Progress | +| --- | --- | --- | --- | +| Task 1 | John | 2023-11-20 | 50% | +| Task 2 | John | 2023-12-01 | 30% | +| Task 3 | Mary | 2023-11-15 | 80% | In this example: -* The "Tasks" field in the **Employee Information** table is multiple-valued because one employee can be responsible for multiple tasks. -* The "Assigned To" field in the **Project Tasks** table is single-valued because each task is assigned to one employee. +- The "Tasks" field in the **Employee Information** table is multiple-value because one employee can be responsible for several tasks. +- The "Assignee" field in the **Project Tasks** table is single-value because each task has one assignee. -When you create a new task in the "Project Tasks" table and assign it to an employee, that employee's "Tasks" field automatically updates to include all tasks they're responsible for. +When you create a new task in the "Project Tasks" table and assign it to an employee, that employee's "Tasks" field in the "Employee Information" table updates to include all assigned tasks. ### Number Mini Charts -**Example**: You might wonder why a number field sometimes displays multiple lines or bars instead of just one. This occurs because it's actually a multiple-value field, likely due to previous linking or referencing operations. +Number fields sometimes display multiple lines or bars instead of one number. This usually means the field has become multiple-value, often through a link, lookup, rollup, or formula reference. diff --git a/en/basic/field/common/show-as.mdx b/en/basic/field/common/show-as.mdx index 7149ba9d..151af2a9 100644 --- a/en/basic/field/common/show-as.mdx +++ b/en/basic/field/common/show-as.mdx @@ -1,26 +1,37 @@ --- title: "Interactive Display" -description: "Choose more interactive display methods for specific fields to enhance data readability and operability." +description: "Change field value display and click behavior, such as URLs, emails, phone numbers, and number charts." --- -## Text Field Interactive Display +Interactive display changes how field values appear and behave when clicked. It does not change the field type. It only changes how users view and interact with the field content. -* **URL**: Display the text field content as a web address, which opens in a new tab when clicked. -* **Email**: Display the text field content as an email address, which launches the default email application when clicked. -* **Phone**: Display the text field content as a phone number, which initiates a phone call when clicked (depending on device support). +## Interactive Display for Text Fields -## Number Field Interactive Display +| Display | Description | +| --- | --- | +| URL | Show text as a web address. Clicking it opens the link in a browser | +| Email | Show text as an email address. Clicking it opens the default mail app | +| Phone | Show text as a phone number. Clicking it starts a call action, depending on device support | -For number fields, you can choose from the following display options: +## Interactive Display for Number Fields -**Single-Value Number Fields**: +Number fields can show numeric status as charts. -* **Bar Chart**: Numbers are displayed as bar charts. You can set the color, choose whether to show the specific value on the chart, and specify a reference number representing 100% (this doesn't set a hard limit but serves as a display reference). -* **Ring Chart**: Numbers are displayed as ring charts. Similarly, you can set the color, choose whether to show the specific value on the chart, and specify a reference number representing 100%. +### Single-Value Number Fields -**Multi-Value Number Fields**: +| Display | Description | +| --- | --- | +| Bar | Show the value with bar length. You can set the color, whether to show the value, and the target value that represents 100% | +| Ring | Show the value as ring progress. You can set the color, whether to show the value, and the target value that represents 100% | -* **Bar Chart**: Multiple numbers are displayed as side-by-side bar charts. You can set the color for these charts. -* **Line Chart**: Multiple numbers are displayed as line charts. You can also set the color for these charts. +### Multiple-Value Number Fields -Using these interactive display features, you can view and understand your data more intuitively while making it more engaging and interesting. +| Display | Description | +| --- | --- | +| Bar | Show multiple number values as side-by-side bars | +| Line | Show multiple number values as a line chart | + +## Notes + +- The target value is a display reference. It does not set a hard upper limit. +- Interactive display can also apply to some formula, rollup, and lookup results. Available options depend on the result type. diff --git a/en/basic/field/conditional-lookup.mdx b/en/basic/field/conditional-lookup.mdx new file mode 100644 index 00000000..9e63a7ed --- /dev/null +++ b/en/basic/field/conditional-lookup.mdx @@ -0,0 +1,118 @@ +--- +title: "Conditional Lookup" +description: "Look up data across tables with filter conditions and return matching record values." +--- + +Conditional Lookup can fetch matching data from a target table without creating a link relationship first. It is useful when the lookup needs to change based on field values in the current record, such as finding the top-selling product in the same category or looking up data for a matching period. + +## Use Cases + +| Scenario | Good for | +| --- | --- | +| Category analysis | Find the top-selling product in the same category | +| Period comparison | Look up the previous period's sales amount for period-over-period calculations | +| Customer matching | Find customer details by phone number, email, or customer ID | +| Detail lookup | Return matching detail records based on conditions from the current record | + +## Procedure + + + + Click the `+` icon on the right side of a field name, choose **Conditional Lookup**, and enter a field title, such as "Related orders". + + + In the target table dropdown, choose the table to query. + + + Choose the field to extract and confirm the returned data type. + + + Add filter conditions, choose the field, condition type, and comparison value. The comparison value can be a static value or a field from the current table. + + + Set the sort field, sort direction, and number of records to show when needed. + + + +At least one filter condition is required. For multiple conditions, choose "All conditions are met (AND)" or "Any condition is met (OR)". + +## Scenario Practice + +### Sales Data Period-over-Period Analysis + +**Tables** + +- Period sales summary table, with fields such as period, start date, end date, and sales amount +- Sales detail table, with fields such as sales amount and sales date + +In the period sales summary table, calculate period-over-period growth for each period. First use Conditional Rollup to calculate current period sales, then use Conditional Lookup to fetch previous period sales, and finally use a Formula field to calculate the growth rate. + +**Steps** + +**Create a conditional rollup field for current period sales** + +1. In the period sales summary table, create a Conditional Rollup field named "Current period sales" +2. Target table: Sales detail table +3. Rollup field: Sales amount +4. Filter conditions: + - Field: Sales date -> Condition: Earlier than or equal to -> Value: End date field from the current table + - Field: Sales date -> Condition: Later than or equal to -> Value: Start date field from the current table +5. Aggregate function: Sum + +**Create a conditional lookup field for previous period sales** + +1. Create a Conditional Lookup field named "Previous period sales" +2. Target table: Period sales summary table (this table) +3. Field: Current period sales +4. Filter condition: + - Field: End date -> Condition: Equals -> Value: Previous period end date field from the current table +5. Aggregate function: Sum + +**Create a formula field for period-over-period growth** + +1. Create a Formula field named "Period-over-period growth rate" +2. Set the formula to `(Current period sales - Previous period sales) / Previous period sales * 100` +3. Format it as a percentage with 2 decimal places + +### Sales Data Product Analysis + +**Tables** + +- Products table, with fields such as category ID, product name, and sales volume +- Categories table, with fields such as category ID and category name + +In the categories table, find the top-selling product for each category to identify the main product in each category. + +**Steps** + +**Top-selling product** + +1. In the categories table, create a Conditional Lookup field named "Top-selling product" +2. Target table: Products table +3. Lookup field: Product name +4. Filter condition: + - Field: Category ID -> Condition: Equals -> Value: Category ID field from the current table +5. Sorting: Sales volume field -> Descending +6. Limit display: 1 record + +**Sales volume** + +1. Create another Conditional Lookup field named "Sales volume" +2. Target table: Products table +3. Lookup field: Sales volume +4. Filter condition: + - Field: Category ID -> Condition: Equals -> Value: Category ID field from the current table +5. Sorting: Sales volume field -> Descending +6. Limit display: 1 record + +## FAQ + + + + Some complex field types, such as images and attachments, may not support filter conditions. + + + + A regular Lookup field requires a Link field first. Conditional Lookup can match data in the target table directly with filter conditions. + + diff --git a/en/basic/field/conditional-rollup.mdx b/en/basic/field/conditional-rollup.mdx new file mode 100644 index 00000000..9f7c434e --- /dev/null +++ b/en/basic/field/conditional-rollup.mdx @@ -0,0 +1,95 @@ +--- +title: "Conditional Rollup" +description: "Calculate cross-table statistics with filter conditions and return one aggregated value." +--- + +Conditional Rollup filters matching records from a target table without creating a link relationship first, then calculates statistics on a selected field. It is useful for calculating counts, sums, averages, and other results based on field values in the current record. + +## Use Cases + +| Scenario | Good for | +| --- | --- | +| Employee task statistics | Count in-progress tasks and completed tasks for an assignee | +| Period sales statistics | Calculate sales amount, order count, or average order value by date range | +| Duplicate data checks | Count duplicate names, phone numbers, or IDs | +| Regional reports | Aggregate business data by region, store, or channel | + +## Procedure + + + + Click the `+` icon on the right side of a field name, choose **Conditional Rollup**, and enter a field title, such as "Total sales amount". + + + In the target table dropdown, choose the table to query. + + + Choose the field to calculate and confirm the field type. + + + Add filter conditions, choose the field, condition type, and comparison value. The comparison value can be a static value or a field from the current table. + + + Choose a calculation method based on the data type, such as original value, unique values, unique count, sum, count, average, maximum, or minimum. + + + +## Scenario Practice + +### Team Task Volume Statistics + +**Tables** + +- Tasks table +- Statistics table + +A team admin needs to count tasks in different statuses for each employee, such as in-progress and completed tasks, to understand workload distribution and completion progress. + +**In-progress tasks** + +1. In the employee information table, create a Conditional Rollup field named "In-progress tasks" +2. Target table: Task assignments table +3. Rollup field: Task ID +4. Filter conditions: + - Field: Assignee -> Condition: Equals -> Value: Employee field from the current table + - Field: Task status -> Condition: Equals -> Value: "In progress" +5. Aggregate function: Count all + +**Completed tasks** + +1. Create another Conditional Rollup field named "Completed tasks" +2. Target table: Task assignments table +3. Rollup field: Task ID +4. Filter conditions: + - Field: Assignee -> Condition: Equals -> Value: Employee field from the current table + - Field: Task status -> Condition: Equals -> Value: "Completed" +5. Aggregate function: Count all + +### Find Duplicate Values + +**Tables** + +- Customers table, with fields such as customer name and phone number + +In the customers table, find duplicate customer names before merging customer profiles. + +**Steps** + +1. In the customers table, create a Conditional Rollup field named "Customer name duplicate count" +2. Target table: Customers table (this table) +3. Rollup field: Customer name +4. Filter condition: + - Field: Customer name -> Condition: Equals -> Value: Customer name field from the current table +5. Aggregate function: Count all +6. Create a Formula field named "Duplicate flag" +7. Set the formula to `IF(Customer name duplicate count > 1, "Duplicate", BLANK())` + +The customers table shows how many times each customer name appears and marks duplicate records with "Duplicate", so you can filter and handle them later. + +## FAQ + + + + Conditional Rollup returns one calculated value, which works well for totals, counts, and averages. Conditional Lookup returns a list of matching raw values, which works well for viewing detail data. + + diff --git a/en/basic/field/created-by.mdx b/en/basic/field/created-by.mdx new file mode 100644 index 00000000..b05f5985 --- /dev/null +++ b/en/basic/field/created-by.mdx @@ -0,0 +1,41 @@ +--- +title: "Created By" +description: "Automatically record who created each record." +--- + +The **Created By** field automatically records who first created each record. Teable generates the value, so it works well for source tracking, workload analysis, and personal views. + +## Use Cases + +| Scenario | Good for | +| --- | --- | +| Source tracking | See which member first created a record | +| Workload statistics | Group by creator and count how many records each member added | +| Personal views | Filter records created by the current user | +| Accountability | Find the original source when data looks wrong | + +## Create and Configure + + + + Click the `+` icon on the right side of the table header, then choose **Created By** from the field type list. + + + Enter a field name, such as "Submitted by" or "Registered by". + + + After the field is added, it automatically shows the avatar and name of the original creator. + + + +## Common Uses + +- **Workload statistics**: Group by the Created By field to see how many records each member created. +- **Issue tracing**: When data looks wrong, check the Created By field to find the original source. +- **Personal workspace**: Set a filter such as `Created By` `is` `current user`. + +## Notes + +- Created By records the person who created the record **first**. Later edits by other members do not change this field. +- To track who last edited a record, use **Last Modified By**. +- For records imported from Excel or CSV, Created By usually records the user who ran the import. diff --git a/en/basic/field/created-time.mdx b/en/basic/field/created-time.mdx new file mode 100644 index 00000000..c2cec3d8 --- /dev/null +++ b/en/basic/field/created-time.mdx @@ -0,0 +1,48 @@ +--- +title: "Created Time" +description: "Automatically record when each record was first created." +--- + +The **Created Time** field automatically records when each record was first created. Teable writes the value, so it works well for sorting, filtering, and reporting by creation time. + +## Use Cases + +| Scenario | Good for | +| --- | --- | +| New record tracking | See when each record was created | +| Latest record sorting | Sort by Created Time descending to handle the newest data first | +| Period reporting | Filter data created this week, this month, or within a custom date range | +| Read-only timestamp | Store a creation time that users cannot edit by hand | + +## Create and Configure + + + + Click the `+` icon on the right side of the table header, then choose **Created Time** from the field type list. + + + Enter a field name, such as "Submitted at" or "Registered date". + + + After the field is added, Teable fills the creation time for existing records and future records. + + + +## Display Format + +| Setting | Description | +| --- | --- | +| Date format | Controls how dates are displayed for your business format | +| Time format | Shows or hides time, and supports 12-hour or 24-hour time | +| Time zone | Follows the viewer's system time zone or uses a fixed time zone | + +## Common Uses + +- **Show latest activity first**: Sort by Created Time descending so newly created records appear at the top. +- **Report by period**: Set a filter such as `Created Time` `is` `this month` to see new records for the month. + +## Notes + +- Created Time is read-only and cannot be edited by hand. +- When records are imported from Excel or CSV, the created time is usually the import time. +- If you need to record a business date manually, use a **Date** field. diff --git a/en/basic/field/date.mdx b/en/basic/field/date.mdx new file mode 100644 index 00000000..7927f5a8 --- /dev/null +++ b/en/basic/field/date.mdx @@ -0,0 +1,57 @@ +--- +title: "Date" +description: "Store dates and times, with support for date format, time format, time zone, and auto-fill current time." +--- + +A **Date** field stores a specific date or point in time, such as a project deadline, meeting time, or employee start date. It can show only the date, or include a time such as `2025-11-03 14:30`. + +## Use Cases + +| Scenario | Good for | +| --- | --- | +| Project scheduling | Task start dates, deadlines, milestone dates | +| Event planning | Meetings, events, appointments, release plans | +| People and contract records | Start dates, signing dates, expiration dates | +| Period reporting | Filter and report data by week, month, or quarter | + +## Create and Configure + + + + In table view, add a field and choose **Date**. + + + Enter a field name, such as "Due Date", "Meeting Time", or "Start Date". + + + Set the date format, whether to include time, the time format, and the time zone as needed. + + + If new records should use the current time automatically, enable auto-fill current time. + + + +## Date Field Options + +| Option | Description | +| --- | --- | +| Include time | Store a specific time in addition to the date | +| Date format | Controls date display, such as `YYYY-MM-DD`, `DD/MM/YYYY`, `MM/DD/YYYY`, or `D MMM YYYY` | +| Time format | Controls whether time is shown, and whether it uses 12-hour or 24-hour time | +| Time zone | Sets the time zone used for dates and times, useful for teams across regions | +| Auto-fill current time | Fills new records with the current time when they are created | + +For more formats, see [Formatter](/en/basic/field/common/formatter). + +## Common Uses + +- **Task scheduling**: Record start dates and due dates, then sort or filter by due date. +- **Event planning**: Record meeting and event times so important dates are easy to track. +- **Period reporting**: Filter data for this week, this month, or a custom date range. +- **Date calculations**: Reference Date fields in Formula fields to calculate intervals between dates. + +## Notes + + +If you need to record when a record was created and keep that value read-only, use **[Created Time](/en/basic/field/created-time)**. + diff --git a/en/basic/field/formula.mdx b/en/basic/field/formula.mdx new file mode 100644 index 00000000..b3860b2b --- /dev/null +++ b/en/basic/field/formula.mdx @@ -0,0 +1,93 @@ +--- +title: "Formula" +description: "Reference other fields and calculate text, numbers, dates, and logical conditions with formulas." +--- + +Formula fields calculate results from other fields in the same record. They can handle math operations, text joining, date calculations, and conditional logic. Use them to turn repeated calculation rules into fields. + +## Use Cases + +| Scenario | Good for | +| --- | --- | +| Automatic calculation | Calculate total price, profit, or score from quantity, unit price, discount, and other fields | +| Text processing | Join text, extract content, or parse information by delimiter | +| Date processing | Calculate date differences, check time ranges, or generate future dates | +| Conditional logic | Return different results based on conditions, such as status, hints, or categories | + +## Formula Basics + +### Data Types + +Before writing a formula, confirm the types of the fields used in the calculation. Different types support different operations and functions. + +| Type | Description | Common uses | +| --- | --- | --- | +| Number | Integers or decimals | Arithmetic, rollups, comparisons | +| Text | String values | Joining, extracting, replacing, splitting | +| Date | Date or date-time values | Calculating intervals, comparing dates | +| Boolean | `TRUE` or `FALSE` | Conditions and logical operations | + +### Reference Fields + +In a formula, reference another field by its field name. Wrap the field name in `{}` and keep it consistent with the actual field name: + +```js +{Unit price} * {Quantity} +``` + +### Operators + +| Operator | Use | +| --- | --- | +| `+` | Calculates the sum of numbers, or joins strings | +| `-` | Calculates the difference between numbers | +| `*` | Calculates the product of numbers | +| `/` | Calculates the quotient of numbers | +| `%` | Calculates the remainder | + +## Functions and Expressions + +### Common Functions + +Functions perform specific operations. For example, `SUM` calculates a total, `LEFT` extracts characters from the start of text, `TEXTBEFORE` extracts text before a delimiter, and `TEXTSPLIT` splits text by a delimiter. + +See the [formula cheat sheet](/en/basic/field/formula/cheat-sheet) for more functions. + +### Text Processing + +| Operation | Function examples | Description | +| --- | --- | --- | +| Join text | `&`, `CONCATENATE` | Joins two or more text values | +| Extract text | `LEFT`, `RIGHT`, `MID`, `TEXTBEFORE` | Extracts part of a string | +| Split text | `TEXTSPLIT` | Splits text into multiple values by delimiter | + +### Logical Conditions + +Use the `IF` function to return different values based on a condition: + +```js +IF(condition, value_if_true, value_if_false) +``` + +When checking whether a field is empty, compare it with `BLANK()`. For example, `IF({Weight}=BLANK(), 1, 2)` returns `1` when a number field is empty, and `2` otherwise. + +### Complex Expressions + +A complex formula can include multiple functions, field references, and operators. Use parentheses to control calculation order: + +```js +({Unit price} * {Quantity}) * (1 - {Discount}) +``` + +## Result Display and Maintenance + +### Formatting and Interactive Display + +Formula results can also use [formatting](/en/basic/field/common/formatter) and [interactive display](/en/basic/field/common/show-as) settings, such as percentage, progress bar, or icon styles. Available options depend on the formula result type. + +### Debugging and Optimization + +- **Check data types**: Confirm that operations and functions use the correct data types. +- **Verify field references**: Confirm that field names are written correctly. +- **Test step by step**: Break complex formulas into smaller parts and test them separately. +- **Avoid repeated calculations**: If the same calculation is used in several places, consider storing the result in a separate field. diff --git a/en/basic/field/advanced/formula/cheat-sheet.mdx b/en/basic/field/formula/cheat-sheet.mdx similarity index 92% rename from en/basic/field/advanced/formula/cheat-sheet.mdx rename to en/basic/field/formula/cheat-sheet.mdx index 98054ad1..042d1906 100644 --- a/en/basic/field/advanced/formula/cheat-sheet.mdx +++ b/en/basic/field/formula/cheat-sheet.mdx @@ -1,12 +1,14 @@ --- title: "Function Cheat Sheet" -description: "This section provides a quick reference for all available functions and their basic usage" +description: "Quickly find formula functions, parameters, output types, and basic examples." mode: "wide" --- -### Numeric Functions +The function cheat sheet helps you find available functions, parameters, output types, and examples. When writing a formula, use the function category to find the function you need. -This section covers common numeric processing functions, including mathematical operations and statistical calculations. +## Numeric Functions + +Numeric functions handle math operations, statistical calculations, and number formatting. | Function Name | Description | Input | Output | Example | | ------------ | ----------- | ----- | ------ | ------- | @@ -30,9 +32,9 @@ This section covers common numeric processing functions, including mathematical | MOD | Returns the remainder after dividing the first parameter by the second. | `value, divisor` | Number | `MOD(9, 2) => 1` `MOD(9, 3) => 0` | | VALUE | Converts a text string to a number. | `text` | Number | `VALUE("$1,000,000") => 1000000` | -### Text Functions +## Text Functions -Here you'll find common functions for text processing, such as string operations and formatting. +Text functions handle joining, searching, replacing, extracting, and splitting strings. | Function Name | Description | Input | Output | Example | | ------------ | ----------- | ----- | ------ | ------- | @@ -55,9 +57,9 @@ Here you'll find common functions for text processing, such as string operations | T | Returns the parameter if it's text, otherwise returns empty. | `value` | Text or Empty | `T("Hello") => "Hello"` `T(100) => null` | | ENCODE_URL_COMPONENT | Replaces certain characters with encoded equivalents for constructing URLs or URIs. Does not encode: - _ . ~ | `value` | Text | `ENCODE_URL_COMPONENT("Hello Teable") => "Hello%20Teable"` | -### Logical Functions +## Logical Functions -Logical functions primarily deal with conditional judgments and logical operations. This section details the use of functions like `IF`, `AND`, `OR`, etc. +Logical functions handle conditions and logical operations, such as `IF`, `AND`, and `OR`. | Function Name | Description | Input | Output | Example | | ------------ | ----------- | ----- | ------ | ------- | @@ -71,9 +73,9 @@ Logical functions primarily deal with conditional judgments and logical operatio | ERROR | Returns an error value. | `message` | Error | `IF(2 > 3, "Yes", ERROR("Calculation")) => "#ERROR: Calculation"` | | IS_ERROR | Returns true if the expression causes an error. | `expr` | Boolean | `IS_ERROR(ERROR()) => true` | -### Date Functions +## Date Functions -Date functions help users process and transform date and time data. This section covers operations like adding, subtracting, and formatting dates. +Date functions handle and convert date and time values, such as getting the current date, calculating date differences, and comparing dates. | Function Name | Description | Input | Output | Example | | ------------ | ----------- | ----- | ------ | ------- | @@ -95,9 +97,9 @@ Date functions help users process and transform date and time data. This section | IS_SAME | Compares two dates to a unit and determines if they are the same. Returns true if they are, false otherwise. | `date1, date2, [unit]` | Boolean | `IS_SAME("2023-09-08", "2023-09-10") => false` | | IS_AFTER | Determines if date1 is later than date2. Returns true if it is, false otherwise. | `date1, date2, [unit]` | Boolean | `IS_AFTER("2023-09-10", "2023-09-08") => true` `IS_AFTER("2023-09-10", "2023-09-08", "month") => false` | -### Array and Other Functions +## Array and Other Functions -In addition to the above categories, this section introduces functions for handling arrays and other specific data types. +Array and other functions handle rollup arrays, deduplication, joining, cleaning empty values, and record IDs. | Function Name | Description | Input | Output | Example | | ------------ | ----------- | ----- | ------ | ------- | diff --git a/en/basic/field/formula/grammar.mdx b/en/basic/field/formula/grammar.mdx new file mode 100644 index 00000000..16ba4693 --- /dev/null +++ b/en/basic/field/formula/grammar.mdx @@ -0,0 +1,39 @@ +--- +title: "Formula Grammar" +--- + +Formula grammar consists of basic values, field references, operators, functions, and parentheses. After you understand these elements, you can write formulas for calculations, conditions, and text processing. + +## Basic Elements + +| Element | Syntax | Description | +| --- | --- | --- | +| String | `'Hello'` or `"World"` | Text wrapped in single or double quotes | +| Integer | `123`, `-456` | A number without a decimal point | +| Decimal | `12.34`, `-45.67` | A number with a decimal point | +| Boolean | `TRUE`, `FALSE` | A true or false value | +| Field reference | `{age}` | A field name wrapped in `{}`. The name must match the actual field name | + +## Operators + +Operators in formulas are used to connect or compare values: + +| Type | Operators | +| --- | --- | +| Math | `+`, `-`, `*`, `/`, `%` | +| Comparison | `>`, `<`, `>=`, `<=`, `=`, `!=` | +| Logic | `&&`, `||` | + +## Function Calls + +You can call functions within formulas. A function call consists of a function name, a pair of parentheses, and parameters inside the parentheses. Parameters are separated by commas. + +For example, `sum(1, 2, 3)` calls the `sum` function with three parameters: 1, 2, and 3. + +## Other Structures + +| Structure | Description | +| --- | --- | +| Parentheses | Change operation precedence, such as `(1 + 2) * 3` | +| Comments | Add context. Block comments use `/* */`, and line comments use `//` | +| Whitespace and line breaks | Usually ignored, but they can make formulas easier to read | diff --git a/en/basic/field/last-modified-by.mdx b/en/basic/field/last-modified-by.mdx new file mode 100644 index 00000000..3fcce169 --- /dev/null +++ b/en/basic/field/last-modified-by.mdx @@ -0,0 +1,41 @@ +--- +title: "Last Modified By" +description: "Automatically record the user who last edited a record." +--- + +The **Last Modified By** field automatically records the user who last edited a record. It helps track collaboration changes. Used with Last Modified Time, it shows who made the latest update and when. + +## Use Cases + +| Scenario | Good for | +| --- | --- | +| Collaboration tracking | See which member last updated a record | +| Accountability | Find the most recent editor when a record looks wrong | +| Personal review | Filter records you recently updated | +| Use with Last Modified Time | See both the last editor and last edit time | + +## Create and Configure + + + + Click the `+` icon on the right side of the table header, then choose **Last Modified By** from the field type list. + + + Enter a field name, such as "Last editor" or "Updated by". + + + After the field is created, it updates to the current user when the record is edited. + + + +## Common Uses + +- **Track collaboration responsibility**: If a task status changes to "Canceled", check Last Modified By to see who made the last change. +- **Review recent work**: Set a filter such as `Last Modified By` `is` `current user` to see records you recently handled. +- **Use with Last Modified Time**: View **Last Modified By** and **Last Modified Time** together to confirm when the latest update happened and who made it. + +## Notes + +- Last Modified By updates automatically when record content changes. +- This field is read-only. Users cannot choose or edit the value by hand. +- If you only need to record the original creator, use **Created By**. diff --git a/en/basic/field/last-modified-time.mdx b/en/basic/field/last-modified-time.mdx new file mode 100644 index 00000000..a7b231a2 --- /dev/null +++ b/en/basic/field/last-modified-time.mdx @@ -0,0 +1,59 @@ +--- +title: "Last Modified Time" +description: "Automatically record when a record was last edited." +--- + +The **Last Modified Time** field automatically records when a record was last edited. It can track all fields or only selected fields, which makes it useful for recent updates, inactive data cleanup, and collaboration review. + +## Use Cases + +| Scenario | Good for | +| --- | --- | +| Recent updates | Sort by Last Modified Time to see records that changed recently | +| Selected field tracking | Update the time only when key fields change, reducing noise from unrelated edits | +| Inactive data cleanup | Filter records that have not been updated for a long time | +| Collaboration review | Use with Last Modified By to see the latest edit time and editor | + +## Create and Configure + + + + Click the `+` icon on the right side of the table header, then choose **Last Modified Time** from the field type list. + + + Enter a field name, such as "Last updated at" or "Recently maintained". + + + Choose whether to track all fields or only selected fields. + + + Set the date format, time format, and time zone as needed. + + + +## Tracking Options + +| Option | Description | +| --- | --- | +| Track all fields | Updates Last Modified Time when any field in the record changes | +| Track selected fields | Updates Last Modified Time only when selected fields change | + +## Display Format + +| Setting | Description | +| --- | --- | +| Date format | Choose how dates are displayed, such as `2024-01-30` or `Jan 30, 2024` | +| Time format | Controls whether a specific time is shown, and whether it uses 12-hour or 24-hour time | +| Time zone | Uses a fixed time zone or follows the viewer's system time zone | + +## Common Uses + +- **Find recently updated tasks**: Sort by Last Modified Time descending so changed records appear at the top. +- **Track key content changes**: Choose **Track selected fields**, then select key fields such as "Title" and "Status". +- **Clean up inactive data**: Set a filter such as `Last Modified Time` `is before` `90 days ago` to find records that have not been maintained. + +## Notes + +- Last Modified Time is read-only and cannot be edited by hand. +- If selected field tracking is enabled, changes to fields that are not selected do not update the time. +- If you need to record when a record was first created, use **Created Time**. diff --git a/en/basic/field/link.mdx b/en/basic/field/link.mdx new file mode 100644 index 00000000..ca6cffa3 --- /dev/null +++ b/en/basic/field/link.mdx @@ -0,0 +1,60 @@ +--- +title: "Link" +description: "Create relationships between tables and select records from another table in the current record." +--- + +The Link field connects two tables. With a Link field, you can select records from another table in the current table and open the linked records when needed. Link fields are also required before you can use **Lookup** and **Rollup** fields. + +## Use Cases + +| Scenario | Good for | +| --- | --- | +| Customers and orders | Link customers in the orders table, and view related orders from the customer table | +| Projects and tasks | Link a task to its project, and view all tasks under a project | +| Students and courses | Track course enrollment, project members, or other many-to-many relationships | +| Line items and parent records | Link order line items to an order, then look up prices or roll up totals | + +## Create and Configure + + + + In the current table, click add field and choose **Link**. + + + In the configuration dialog, choose the table to link to, such as linking the orders table to the customers table. + + + Choose a one-way or two-way link as needed. + + + Use **Allow multiple selection** and **Allow duplicate values** to configure one-to-one, one-to-many, many-to-one, or many-to-many relationships. + + + +## One-Way and Two-Way Links + +| Mode | Description | Best for | +| --- | --- | --- | +| Two-way link | Enabled by default. When you create a link field, Teable creates a corresponding link field in the target table, and both sides stay in sync | Relationships that need to be viewed from both tables, such as orders and customers or projects and tasks | +| One-way link | When the two-way option is off, only the current table shows the linked records. The target table does not get a reverse field | Cases where you only need to reference another table and do not want to change the target table structure | + +## Relationship Types + +Use **Allow multiple selection** and **Allow duplicate values** together to define four common relationship types: + +| Relationship | Business example | Configuration | +| :--- | :--- | :--- | +| **One-to-one (1:1)** | **Employee - Profile**
One employee has one profile, and one profile belongs to one employee | ☐ Allow multiple selection
☐ Allow duplicate values
*(both options off)* | +| **One-to-many (1:N)** | **Department - Employee**
One department has multiple employees, but each employee belongs to one department | ☑ Allow multiple selection
☐ Allow duplicate values
*(only allow multiple selection)* | +| **Many-to-one (N:1)** | **Task - Project**
Multiple tasks belong to one project, but each task belongs to only one project | ☐ Allow multiple selection
☑ Allow duplicate values
*(only allow duplicate values)* | +| **Many-to-many (N:N)** | **Student - Course**
One student can take multiple courses, and one course can have multiple students | ☑ Allow multiple selection
☑ Allow duplicate values
*(both options on)* | + +## Common Uses + +- **CRM customer management**: In a `Companies` table, create a link field to a `Contacts` table so one company can link to multiple contacts. +- **Project task assignment**: In a `Tasks` table, create a link field to a `Projects` table so each task belongs to one project, while the project table can show related tasks. +- **Order line items**: In an `Orders` table, link to a `Products` table, then use lookup fields to show prices and rollup fields to calculate order totals. + +## Notes + +- **One-to-many limits**: In a strict one-to-many relationship, when multiple selection is off on the Table B side, a Table B record linked by one Table A record cannot be selected by other Table A records. This works for data that should not be reused, such as ID numbers or employee profiles. diff --git a/en/basic/field/long-text.mdx b/en/basic/field/long-text.mdx new file mode 100644 index 00000000..7b57822e --- /dev/null +++ b/en/basic/field/long-text.mdx @@ -0,0 +1,50 @@ +--- +title: "Long Text" +description: "Store long text with line breaks, with support for plain text and Markdown display." +--- + +**Long Text** is for longer content that needs line breaks, such as notes, instructions, logs, meeting notes, or detailed descriptions. Unlike Single Line Text, Long Text keeps paragraph structure and can be displayed as Markdown. + +## Use Cases + +| Scenario | Good for | +| --- | --- | +| Detailed descriptions | Task details, product descriptions, bug reproduction steps | +| Process notes | Customer follow-ups, daily summaries, meeting notes | +| Supporting context | Notes or explanations that should not be split into separate fields | +| Content drafts | Copy, announcements, and knowledge base snippets | + +## Create and Configure + + + + In a table, click `+`, then choose **Long Text**. + + + Enter a field name, such as "Description", "Notes", or "Details". + + + Set **Default value**, **Display mode**, and **Field description** as needed. + + + After saving, users can enter multi-line content in cells. + + + +## Display Mode + +| Display mode | Good for | Description | +| --- | --- | --- | +| Plain text | Notes, logs, instructions | Keeps line breaks and is suitable for direct editing and reading | +| Markdown | Document snippets, checklists, links | Displays content with Markdown formatting | + +## Common Uses + +- **Manual line breaks**: Press `Shift + Enter` while editing to insert a line break. +- **Automatic wrapping**: Cells wrap content based on column width, which makes long text easier to read. +- **Default text**: If every new record needs the same note, set a default value. + +## Notes + +- Long Text does not support URL, Email, or Phone interactive display. It only supports plain text and Markdown. +- If the content does not need line breaks and should use URL, Email, or Phone display, use a **Single Line Text** field. diff --git a/en/basic/field/lookup.mdx b/en/basic/field/lookup.mdx new file mode 100644 index 00000000..bad04527 --- /dev/null +++ b/en/basic/field/lookup.mdx @@ -0,0 +1,51 @@ +--- +title: "Lookup" +description: "Reference field values from a linked table through an existing link relationship and keep the data in sync." +--- + +Lookup fields are built on **Link** fields. A Lookup field references a selected field from a linked table, so the current table can display data from another table without entering it again. + +## Use Cases + +| Scenario | Good for | +| --- | --- | +| Order line items | After linking a product, show its price, SKU, or category | +| Ticket handling | After linking a customer, show phone number, customer tier, or owner | +| Book management | In a books table, show the author's birthday, nationality, or bio | +| Project management | From linked tasks, show assignee, due date, or status | + +## Create and Configure + + + + Before using a Lookup field, create a **Link** field between the two tables. + + + In the table view, click `+` to add a field and choose **Lookup**. + + + Choose an existing link field in the current table as the lookup path. + + + Choose the field to read from the source table, such as an author's birth date, a customer's phone number, or a product price. + + + +## Automatic Sync + +After setup, Teable fills the lookup result based on the existing link relationship: + +- If the linked record changes, such as choosing a different author, the lookup value updates. +- If source data changes, such as editing an author's birthday, the lookup value refreshes. + +## Common Uses + +- **Book management**: In a `Books` table, use an `Author` link field to look up `Birth date` from an author details table. +- **Order calculation**: In an `Order line items` table, look up the product price and then use a formula to calculate the total. +- **Customer information sync**: In a tickets table, link a customer and look up the customer's phone number, email, or tier. + +## Notes + +- **Read-only field**: Lookup fields are **read-only**. You cannot edit the looked-up value from the current table. To change the value, edit the original field in the source table. +- **Single value and multiple values**: If the link relationship is one-to-one, the lookup result is a single value. If the relationship is one-to-many, the lookup result becomes a multi-value array and displays values separated by commas. +- **Data dependencies**: Lookup fields depend on the link field and the source field. If the link field or target field in the source table is deleted, the lookup field stops working. diff --git a/en/basic/field/multiple-select.mdx b/en/basic/field/multiple-select.mdx new file mode 100644 index 00000000..c2a3cdbc --- /dev/null +++ b/en/basic/field/multiple-select.mdx @@ -0,0 +1,61 @@ +--- +title: "Multiple Select" +description: "Choose one or more values from a predefined list. Useful for tags, categories, and multi-dimensional filtering." +--- + +A **Multiple Select** field lets users choose one or more values from predefined options. It works well for tags, topics, skills, departments, and other categories that can apply at the same time. + +## Use Cases + +| Scenario | Good for | +| --- | --- | +| Tags and topics | Multiple tags for articles, videos, customers, or tasks | +| Skills and capabilities | Several skills or areas of experience for a member | +| Cross-team work | Departments involved in a project, such as Sales, Engineering, and Finance | +| Multi-dimensional categories | Records that belong to several topics, channels, or business lines | + +## Create and Configure + + + + Click the `+` icon on the right side of the table header, then choose **Multiple Select** from the field type list. + + + Enter a field name, such as "Topics", "Skills", or "Departments". + + + Enter an option name in the setup panel and press **Enter** to add it quickly. + + + Set default values as needed, and choose whether users can create new options while editing. + + + +## Option Management + +| Setting | Description | +| --- | --- | +| Color | Teable assigns colors automatically. You can also click the dot on the left side of an option to change it | +| Order | Drag the icon on the left side of an option to reorder the list | +| Default value | New records can start with a common set of tags | +| Allow creating new options | When turned off, users can only choose existing options while editing cells | + +## Filter by Multiple Select Values + +| Filter type | Description | +| --- | --- | +| Contains any of | Shows records that include at least one selected option | +| Contains all of | Shows records that include every selected option | +| Exactly equals | The selected options must match exactly, with no extra or missing options | + +## Common Uses + +- **Content tags**: Add topics such as "Technology", "Design", and "Marketing" to content records. +- **People skills**: Record several skills for each member, then filter by skill combinations. +- **Project departments**: Record which departments are involved in cross-team projects for grouping and reporting. + +## Notes + +- Multiple Select allows **1 to N** values. Single Select allows **1** value per record. +- Colors help identify categories, but do not rely on color alone for key meaning. +- If the value must be mutually exclusive, use a **Single Select** field. diff --git a/en/basic/field/number.mdx b/en/basic/field/number.mdx new file mode 100644 index 00000000..1c597827 --- /dev/null +++ b/en/basic/field/number.mdx @@ -0,0 +1,67 @@ +--- +title: "Number" +description: "Store numeric data such as prices, inventory, quantities, and ratios. Supports decimals, currency, percentage, and visual displays." +--- + +A **Number** field stores values that can be calculated, such as prices, inventory, quantities, scores, and ratios. It supports number, currency, and percentage formats, and can show values as bars, rings, or lines. + +## Use Cases + +| Scenario | Good for | +| --- | --- | +| Amounts and costs | Contract amounts, product prices, budgets, costs | +| Quantities and inventory | Stock counts, order quantities, work hours, counts | +| Ratios and progress | Achievement rate, conversion rate, completion rate | +| Scores and metrics | Scores, weights, health scores, risk scores | + +## Create and Configure + + + + Click the `+` on the right side of the table header, then choose **Number** from the field type list. + + + Enter a field name, such as "Product Price", "Inventory", or "Achievement Rate". + + + Choose **Number**, **Currency**, or **Percentage** based on the data. + + + Set decimal places, and add a default value for new records if needed. + + + +## Number Formats + +| Format | Good for | Example | +| --- | --- | --- | +| Number | Counts, quantities, scores | `100`, `2.5` | +| Currency | Amounts, costs, budgets | `$100.00` | +| Percentage | Ratios, progress, conversion rates | `50%` | + +Precision controls how many decimal places are shown. After precision is set, Teable rounds displayed values to that precision. + +## Display Settings + +Number fields can show values visually in addition to plain text. + +| Display mode | Good for | Description | +| --- | --- | --- | +| Default | Single-value and multi-value numbers | Shows the number directly | +| Bar | Single-value and multi-value numbers | Uses bar length to show value size | +| Ring | Single-value numbers | Uses a ring progress display to show proportion | +| Line | Multi-value numbers | Uses a line to show changes across values | + +For Bar and Ring display, you can set a target value, color, and whether to show the number. The target value is the value that fills the visual display. For example, if the full score is `100`, set the target value to `100`. + +## Common Uses + +- **Contract amounts**: Create a "Contract Amount" field, choose **Currency**, select `$`, and set precision to 2 decimal places. +- **Sales achievement rate**: Create an "Achievement Rate" field, choose **Percentage**, set display mode to **Bar**, and set the target value to `1`. +- **Inventory management**: Create an "Inventory" field, choose **Number**, then use it for sorting, filtering, and summaries. + +## Notes + +- Number fields only accept integers and decimals, such as `12` and `3.14`. +- Percentages are stored as decimals. Entering `100%` stores `1`; entering `50%` stores `0.5`. +- If Formula, Rollup, or Lookup results are numeric, they can use Number field formatting and display modes. diff --git a/en/basic/field/rating.mdx b/en/basic/field/rating.mdx new file mode 100644 index 00000000..b585d601 --- /dev/null +++ b/en/basic/field/rating.mdx @@ -0,0 +1,52 @@ +--- +title: "Rating" +description: "Add visual numeric ratings to records. Useful for quality, priority, satisfaction, and evaluation results." +--- + +A **Rating** field uses icons to show a score. It works well for customer satisfaction, product ratings, priority, idea scores, and performance reviews. + +## Use Cases + +| Scenario | Good for | +| --- | --- | +| Product evaluation | Product, feature, or content ratings | +| Service feedback | Customer satisfaction and service quality ratings | +| Performance review | Employee, project, or vendor scores | +| Priority judgment | Urgency, value, or risk | + +## Create and Configure + + + + Click the `+` icon on the right side of the table header, then choose **Rating** from the field type list. + + + Enter a field name, such as "Customer Satisfaction", "Recommendation Score", or "Priority". + + + The default maximum is **5**. You can change it to **10** or another limit to set the available rating range. + + + Ratings use stars by default. You can choose another icon to match the meaning of the field. + + + +## Settings + +| Setting | Description | +| --- | --- | +| Maximum value | Controls the rating limit, such as a 5-point or 10-point scale | +| Icon style | Controls the rating symbol, such as star, heart, thumbs-up, or lightbulb | + +## Common Uses + +- **Product review management**: Record product ratings, then filter for high-rated products. +- **Service feedback**: Collect customer satisfaction in support records and review service quality. +- **Employee performance review**: Score several capability areas in an HR review table. +- **Rating plus comment**: Use with a **Long Text** field to capture both a score and written feedback. + +## Notes + +- Rating values can be referenced by **Formula** fields to calculate averages or totals. +- Before setting the maximum value, align the team on what each score means. +- If you lower the maximum value later, such as changing 10 to 5, existing scores above the new limit may not display correctly. Check historical data before changing it. diff --git a/en/basic/field/rollup.mdx b/en/basic/field/rollup.mdx new file mode 100644 index 00000000..f0a63cd6 --- /dev/null +++ b/en/basic/field/rollup.mdx @@ -0,0 +1,72 @@ +--- +title: "Rollup" +description: "Aggregate values from linked records, such as sum, count, average, maximum, and minimum." +--- + +{/* mintlify-resync: 2026-05-14 */} +Rollup fields calculate statistics from multiple linked records. A Rollup field usually starts from an existing **Link** field, selects a target field from linked records, and calculates the result with a chosen function. + +## Use Cases + +| Scenario | Good for | +| --- | --- | +| Order amount | Roll up prices from order line items to calculate the order total | +| Task progress | Count linked tasks, completed tasks, or average ratings | +| Customer value | Roll up total spend or order count from customer orders | +| Tag cleanup | Combine tags, participants, or source channels from linked records | + +## Create and Configure + + + + Before creating a Rollup field, create a **Link** field. + + + Click `+` in the table header to add a field and choose **Rollup**. + + + Choose the link field that provides the data source, then choose the target field to calculate. + + + Choose a function based on the target field type, such as sum, count, average, maximum, or minimum. + + + +## Formatting and Display + +Rollup results can usually use formatting and interactive display settings: + +- **Formatting**: Set decimal precision, currency symbols, or percentages. +- **Interactive display**: Show number results as bars, rings, or other display styles. + +See [formatting](/en/basic/field/common/formatter) and [interactive display](/en/basic/field/common/show-as) for details. + +## Common Uses + +- **Bookstore order totals**: In an `Orders` table, use the `Selected books` link field to roll up the `Price` field from the `Books` table. Choose **SUM** to calculate the order total. +- **Project task statistics**: In a `Projects` table, count linked tasks or calculate task completion rate. +- **Customer spending totals**: In a `Customers` table, roll up related order amounts to see each customer's total spend. + +## Supported Rollup Formulas + +| Formula name | Explanation | +| --- | --- | +| COUNTALL | Counts all values, including text values and blanks | +| COUNTA | Counts non-empty values | +| COUNT | Counts numeric items | +| SUM | Calculates the sum of all numeric values | +| MAX | Returns the largest numeric value | +| MIN | Returns the smallest numeric value | +| AND | Returns true if all values are true | +| OR | Returns true if any value is true | +| XOR | Returns true if an odd number of values are true | +| ARRAY_JOIN | Joins all values in an array into a string | +| ARRAY_UNIQUE | Removes duplicate values and returns an array with unique values | +| ARRAY_COMPACT | Removes empty values and returns a new array | +| CONCATENATE | Joins multiple values into a string | + +## Notes + +- **Dynamic updates**: Rollup fields calculate in real time. If source data or link relationships change, the rollup result refreshes. +- **Data type limits**: Some functions only work with specific field types. For example, **SUM** only works with number fields. If you choose a text field, Teable does not offer sum as an option. +- **Performance**: Many rollup fields can affect performance, especially when they involve many records. Plan link relationships carefully and review rollup settings from time to time. diff --git a/en/basic/field/single-line-text.mdx b/en/basic/field/single-line-text.mdx new file mode 100644 index 00000000..49c75ad5 --- /dev/null +++ b/en/basic/field/single-line-text.mdx @@ -0,0 +1,57 @@ +--- +title: "Single Line Text" +description: "Store short text such as names, titles, IDs, URLs, email addresses, and phone numbers." +--- + +**Single Line Text** stores short content that does not need line breaks, such as customer names, task titles, order IDs, SKUs, URLs, email addresses, or phone numbers. Values can be sorted and filtered, and formula functions can reference them for extraction, concatenation, and text formatting. + +For notes, summaries, or descriptions that need line breaks, use **[Long Text](/en/basic/field/long-text)**. For fixed values such as status, category, or priority, **[Single Select](/en/basic/field/single-select)** or **[Multiple Select](/en/basic/field/multiple-select)** is usually a better fit. + +## Use Cases + +| Scenario | Good for | +| --- | --- | +| Record names or titles | Customer names, task titles, product names, project names | +| IDs or codes | Order IDs, contract IDs, SKUs, external system IDs | +| Contact or access details | Company websites, email addresses, phone numbers | +| Short free text | Short notes, labels, or identifiers that cannot be listed as fixed options | + +## Create and Configure + + + + Click the **+** icon on the right side of the table header, then choose **Single Line Text** from the field type list. + + + Enter a field name, such as "Customer Name", "Order ID", or "Company Website". + + + If new records usually start with the same text, enter a **Default value**, such as "Pending review" or "New". The default value is filled only when a new record is created and can still be edited later. + + + +## Display Mode + +Single Line Text supports four display modes: + +| Display mode | Good for | Click behavior | +| --- | --- | --- | +| Default | Names, titles, IDs, and other plain text | No extra click behavior | +| URL | Web addresses | Opens the URL in the default browser | +| Email | Email addresses | Opens the default email app | +| Phone | Phone numbers | Opens the communication app on the device. On mobile, users can call the number directly | + +Display mode changes how the value appears and behaves when clicked. It does not change the field type. Interactive display can also be used for Formula, Rollup, and Lookup fields. For details, see [Interactive Display](/en/basic/field/common/show-as). + +## Common Uses + +- **Customer contact management**: Create a "Company Website" field and set it to **URL** so the website opens when clicked. Create a "Phone" field and set it to **Phone** so mobile users can call in one tap. +- **Order or contract management**: Create an "Order ID" or "Contract ID" field for search, filtering, and matching with external systems. +- **Initial ticket status**: Create a "Current Stage" field and set the default value to "New". If the stage comes from a fixed workflow, use a **Single Select** field instead. +- **Text extraction and concatenation**: Reference Single Line Text in formulas to extract ID segments, concatenate display names, or normalize text format. + +## Notes + +- Single Line Text is for short content. The Enter key usually confirms input. Use **Long Text** for notes, article summaries, and other long content. +- URL, Email, and Phone are display modes. The field remains Single Line Text and can still be sorted, filtered, and processed with text functions. +- Single Line Text does not limit values to predefined options. Use **Single Select** or **Multiple Select** for statuses, categories, and priorities that need consistent values. diff --git a/en/basic/field/single-select.mdx b/en/basic/field/single-select.mdx new file mode 100644 index 00000000..de73f72d --- /dev/null +++ b/en/basic/field/single-select.mdx @@ -0,0 +1,60 @@ +--- +title: "Single Select" +description: "Choose one option from a predefined list. Useful for statuses, categories, and priorities." +--- + +A **Single Select** field lets users choose one value from predefined options. It works well for mutually exclusive states, such as task stage, customer tier, priority, or approval result. + +## Use Cases + +| Scenario | Good for | +| --- | --- | +| Status flow | Not started, in progress, done, and other mutually exclusive stages | +| Category management | Customer tier, lead source, content type | +| Priority management | High, medium, low, and other fixed priorities | +| Approval result | Approved, rejected, needs more information | + +## Create and Configure + + + + Click the `+` icon on the right side of the table header, then choose **Single Select** from the field type list. + + + Enter a field name, such as "Task Status", "Priority", or "Customer Tier". + + + Enter an option name in the input box and press **Enter** to create it quickly. + + + If new records usually use the same option, set it as the default value. + + + +## Option Management + +| Setting | Description | +| --- | --- | +| Color | Click the dot on the left side of an option name to choose a color from the palette | +| Order | Drag the icon on the left side of an option to change its order in the dropdown | +| Edit | Edit an option name directly. Existing records are updated with the new name | +| Delete | Click the trash icon on the right side of an option to delete it | +| Allow creating new options | When turned off, users can only choose existing options while editing cells | + +## Common Uses + +- **Project progress management**: Create a "Task Status" field with options such as "Not started", "In progress", and "Done", then create a **Kanban View** based on that field. +- **Customer tier management**: Create a "Customer Tier" field with options such as "High", "Medium", and "Low", then group customers by tier. + +## Single Select vs. Multiple Select + +| Field type | Number of values | Good for | +| --- | --- | --- | +| Single Select | Each record can choose only 1 value | Status, stage, tier, priority | +| Multiple Select | Each record can choose multiple values | Tags, skills, topics, departments | + +## Notes + +- Single Select allows only **1** value per record, so it is suitable for mutually exclusive states. +- If a record needs multiple tags, use a **Multiple Select** field. +- Before converting a Multiple Select field to Single Select, check the data. If a record has multiple options, Teable usually keeps only the first option, which may cause data loss. diff --git a/en/basic/field/user.mdx b/en/basic/field/user.mdx new file mode 100644 index 00000000..44dbb8f1 --- /dev/null +++ b/en/basic/field/user.mdx @@ -0,0 +1,49 @@ +--- +title: "User" +description: "Select space members in records. Useful for assignees, participants, approvers, and collaborators." +--- + +A **User** field selects space members in a record. It works well for task assignees, project participants, approvers, and collaborators. It can also be used with filters, grouping, and Kanban views to build personal workspaces. + +## Use Cases + +| Scenario | Good for | +| --- | --- | +| Task owner | Assign one owner to each task | +| Multi-person collaboration | Select multiple members on one record to show shared participation | +| Approval and handoff | Record approvers, reviewers, or delivery owners | +| Personal workspace | Filter records assigned to the current user | + +## Create and Configure + + + + Click `+` in the table header to add a field, then choose **User**. + + + Enter a field name, such as "Owner", "Assignee", or "Approver". + + + When enabled, one record can select multiple members. When disabled, one record can select only one member. + + + Enable **Notify users when selected** if needed. Selected members receive a notification. + + + +## Settings + +| Setting | Description | Good for | +| --- | --- | --- | +| Allow multiple users | One record can select several members | Collaborative tasks, multi-person participation | +| Do not allow multiple users | One record can select only one member | Clear ownership, single approver | +| Notify users when selected | Selected members receive a notification | Task assignment, approval reminders | + +## Common Uses + +- **Task assignment and Kanban management**: Create an "Owner" field, usually with multiple users turned off, then create a Kanban view grouped by owner. +- **My workspace**: In a table or Kanban view, set a filter such as `Owner` `is` `current user` so each member sees their own tasks. + +## Notes + +- If **Allow multiple users** is enabled, one record may appear under multiple member groups in grouped or Kanban views. For example, if a task is assigned to A and B, it appears in both A's column and B's column. diff --git a/en/basic/record.mdx b/en/basic/record.mdx index fd018ae1..c11a18dc 100644 --- a/en/basic/record.mdx +++ b/en/basic/record.mdx @@ -1,63 +1,74 @@ --- title: "Overview" +description: "Records are the basic data units stored in a table. In a table view, each row usually represents one record." --- -In Teable, a record is a single data entry in a table. In the table view, each record is represented as a row. -### Record Structure +Records store complete data entries. Each record is made up of multiple fields. For example, a customer record can include name, phone number, owner, and follow-up status. An order record can include order number, customer, amount, and delivery date. -Each record consists of multiple fields, with each field representing a specific attribute or piece of information about that record. Fields can be of various types, such as text, numbers, dates, options, etc. +## Basic Concepts -### Record ID +| Concept | Description | +| --- | --- | +| Record | A row of data in a table | +| Field | An attribute in a record, corresponding to a table column | +| Cell | The value of one record under one field | +| Primary field | The main display name of a record, often used in mobile lists and linked record selectors | -Each record has a unique ID. You can view a record's ID by following these steps: +## Create Records -1. Expand the record details -2. Check the browser URL -3. The ID is the string starting with "rec" in the URL +You can create records in the following ways: -### Creating New Records +Create records from the row context menu -There are several ways to create new records: +| Entry | Action | +| --- | --- | +| Bottom of the table | Click the `+` button at the bottom of the table view to add a record at the end | +| Top toolbar | Click `+ Add record` on the left side of the toolbar | +| Context menu | Right-click an existing record and insert a record above or below it | -* Click the "+" button at the bottom of the table -* Click the **Add record** button in the toolbar -* Select a record, then right-click and insert a record above or below +## Edit Records -### Editing Records +- **Edit a cell**: Click any cell and enter or change its content. +- **Clear content**: Select one or more cells, then press `Delete` or `Backspace`. +- **Bulk select**: Drag with the mouse to select multiple cells or records, then edit, delete, or copy them. +- **Copy and paste**: Copy and paste one or more cells. If the pasted data has more rows than the current table, Teable automatically adds new rows. -* Click directly on a field to edit it -* Click the expand icon on the left to edit in form mode +## Delete Records -### Deleting Records +Bulk delete records menu -* Select one or more records, right-click and choose "Delete" -* Click the checkbox icon on the left, select one or more records, and click delete +Select one or more records, then right-click and choose **Delete record**. For bulk deletion, you can select the checkboxes at the beginning of rows before deleting them. -### Clearing Cells +## Record Details -Use the Delete or Backspace shortcut keys to clear the content of currently selected cells. +Open record detail entry -### Bulk Operations +Click the expand icon at the beginning of a record row, or select a record and press Space, to open the record detail card. -Support for selecting multiple cells or records by dragging the mouse for bulk operations such as editing, deleting, etc. +The detail card is useful for records with many fields. You can browse fields vertically on one page, reduce horizontal scrolling, edit fields, view comments, and check record history. -### Copy and Paste +## Collaboration and Tracking -* Support for copying and pasting content from single or multiple cells -* Support for automatic row and column expansion during copy and paste +| Feature | Description | +| --- | --- | +| Comments | Each record has its own comment area for discussing specific data, @mentioning teammates, or adding context. See [Comments](/en/basic/record/comment). | +| Record history | Teable records record changes so you can trace updates. See [Record History](/en/basic/record/record-history). | +| Linked records | Use a **Link** field to connect records across tables. See [Link Field](/en/basic/field/link). | -### Record History +## Notes -Teable automatically tracks record modification history for easy viewing of changes and rollback. For details, please see the [Record History section](/en/basic/record/record-history). - -### Record Permissions - -Through the authority matrix, you can configure users' record access scope and whether they can edit records. For details, please see the [Authority Matrix section](/en/basic/authority-matrix). - -### Record Linking - -You can link records from different tables through link fields to establish connections between data. The first field of each record will be displayed as the title in the link field. For details, please see the [Link Field section](/en/basic/field/advanced/link). - -### Record Comments - -Users can add comments to records to facilitate team collaboration and information exchange. For details, please see the [Record Comments section](/en/basic/record/comment). +- The primary field is used as the main display name of a record. Put recognizable information such as a name, task title, or order number in the primary field, instead of note-style content. +- Each record has a unique record ID. After opening the record detail card, the string in the browser URL that starts with `rec` is the record ID. +- If you cannot edit some records, an administrator may have limited the editable scope through the **Authority Matrix**. See [Authority Matrix](/en/basic/authority-matrix). diff --git a/en/basic/record/comment.mdx b/en/basic/record/comment.mdx index 6d1dc559..3bca0d25 100644 --- a/en/basic/record/comment.mdx +++ b/en/basic/record/comment.mdx @@ -1,54 +1,68 @@ --- title: "Comments" -description: "The comment feature provides a communication platform for each record, enabling team members to discuss, provide feedback, or add additional information about specific data" +description: "Start discussions in records, @mention teammates, and add context to specific data." --- -## Key Features +Comments belong to specific records. Team members can discuss issues, add materials, explain why a change was made, and keep context with the data instead of spreading it across chat tools. -* Real-time conversations +## Use Comments -* @mention support +### Open Comments -* Rich text editing +Comments entry in the record detail card -* Support for images and links +Open any record detail card, then click the **Comments** icon in the top-right corner to open the side comment panel. -## Usage +Add comment entry in the record context menu -### Viewing Comments +You can also right-click a record in the table view and select **Add comment**. -Access comments through the comment button in the top-right corner of the expanded card +### Send Comments -### Editing Comments +Enter content in the comment box and send it. Comments support images and pasted links, which are useful for adding screenshots, references, or external context. -Hover over your comment to reveal an action bubble. Click the edit button to modify your comment. Edited comments will display "(edited)". +Comment editor -### Deleting Comments +### Mention Teammates -Similarly, click the delete action to remove your own comments. Note that if the comment has been referenced, it will show as "Comment deleted". +Type `@`, then choose a teammate from the dropdown. The mentioned member receives a notification and can jump directly to the related record. -### @Mentioning Collaborators +### Reply and React -You can mention collaborators by typing @ in the editor. The mentioned user will receive a notification for this comment. +| Action | Description | +| --- | --- | +| Reply | Click **Reply** below a comment to continue the discussion under that comment | +| React | Click the emoji icon next to a comment to respond quickly | +| Edit | Hover over a comment you sent, then click the action button to edit it | +| Delete | Hover over a comment you sent, then click the action button to delete it | -### Replying +Edited comments display an "edited" label. -You can reply to specific comments. +## Notifications and Subscriptions -### Reactions +By default, notifications are sent only when: -Click the reaction button to use preset emojis, adding feedback to the comment and making interactions more engaging. +- Someone `@` mentions you. +- Someone replies to your comment. -### Notifications +If you want to follow a record closely, click the bell icon in the top-right corner of the comment panel and switch to notifications for all comments. -You can change the notification mode by clicking the bell icon in the top-right corner of the comment panel. +New comment notifications usually appear in the notification center at the bottom-left corner of the interface. Clicking a notification opens the related record and locates the relevant comment. -By default, to minimize unnecessary notifications, we only send notifications when: +## Common Scenarios -1. Your comment receives a reply. - -2. You are @mentioned. - -If you want to closely follow updates on a record, click subscribe to receive notifications whenever someone comments. - -Comment notifications appear in the bottom-left corner. Clicking them will automatically navigate to the relevant comment. +- **Task clarification**: @mention a teammate under a requirement or task record to confirm details, with the discussion preserved in the record. +- **Approval feedback**: Leave revision feedback under reimbursement, contract, or content review records so the requester can act on it directly. +- **Change notes**: Add a reason after changing important fields so the context is available later. diff --git a/en/basic/record/record-history.mdx b/en/basic/record/record-history.mdx index ea9e4cba..f8fe7dc0 100644 --- a/en/basic/record/record-history.mdx +++ b/en/basic/record/record-history.mdx @@ -1,37 +1,56 @@ --- title: "Record History" +description: "View table-level or single-record change history and track who changed data and when." --- -Teable's record history allows you to track and manage changes made to data over time, making it convenient to search and trace historical data. +Record history is used to view data changes. You can view changes across multiple records from the table level, or open one record to view its complete change history. ## Table Record History -Table record history shows the history of all records in the current table. This feature allows users to view record changes from a global table perspective, understand which records have been modified, and helps recover accidentally deleted record data. +Table record history shows changes across records in the current table. It is useful for checking which records were modified from a global table perspective, and it can also help find accidentally deleted records. -### Access +Table history menu entry -Click the record history icon in the top-right toolbar +Click the **...** button in the top-right corner of the table, then choose **History** > **Table record history**. -Open the table history dialog and click the "View Record" button to navigate to the corresponding record +Table record history dialog -### Permission Notes +In the table history dialog, click **View Record** next to a history entry to jump to the corresponding record. -* When authority matrix is not enabled, users with table editing permissions can view the history. - -* When authority matrix is enabled, only users with administrator permissions can view the history. +When the **Authority Matrix** is not enabled, users with table editing permission can view table record history. When it is enabled, only administrators can view it. ## Individual Record History -This feature focuses on the detailed history of a single record. Users can select a specific record to view its complete change history. +Individual record history only shows changes for the current record. It is useful for checking when a field in one record was changed and what changed before and after the update. + +Record history entry in the record detail card -### Access +Open the record detail card, then click the record history icon in the top-right corner. -Click the record history icon in the top-right corner of the expanded record card +Record history entry in the record context menu -### Permission Notes +You can also right-click a record in the table view and select **Show record history**. -* In all cases, users only need edit permission for a specific record to view its history. +Users only need editing permission for a specific record to view that record's history. -## Important Notes +## Notes -The smallest unit in record history is a record's cell. Therefore, when performing bulk data operations, a large amount of historical data will be generated. +- Record history stores changes at the cell level. +- Bulk import, bulk paste, and bulk update operations can generate many history entries. +- If you cannot see the history entry point, first confirm whether you have editing permission for the corresponding record or table. diff --git a/en/basic/space.mdx b/en/basic/space.mdx index bf8db265..ebf1905b 100644 --- a/en/basic/space.mdx +++ b/en/basic/space.mdx @@ -4,41 +4,57 @@ description: "Create, rename, delete, and manage spaces in Teable." --- {/* mintlify-resync: 2026-05-14 */} -### Creating a New Space +## Creating a New Space -After logging into Teable, users can easily create a space by clicking the "Create Space" button in the upper right corner. After creation, you'll automatically enter the new space to start working immediately. +After logging into Teable, create a space from the space switcher: Each user can own up to two free spaces. If you already own two free spaces, you cannot create another free space. -![](/images/2025-02-14-14-43-57.png) +1. Click the current space name in the upper-left corner +2. Click **Create a space** +3. Enter the space name and confirm -### Renaming a Space +Create a space from the space switcher -Users can change the space name as needed: +## Renaming a Space -1. Click the "···" button in the upper right corner of the space to open the space menu -2. Click Rename -3. Set the new name -4. Click outside the input box to save +Users can change the space name from Space settings: -### Deleting a Space +1. Click **Settings** in the space sidebar +2. Open **General** under **Space** +3. Edit **Space name** -When necessary, you can also delete a space: +Rename a space in Space settings + +## Deleting a Space -1. Click the "···" button in the upper right corner of the space to open the space menu -2. Click Delete +When necessary, you can also delete a space: -![](/images/2025-02-14-14-44-28.png) +1. Click **Settings** in the space sidebar +2. Open **General** under **Space** +3. Click **Delete space** -### Space Trash +## Space Trash Deleted spaces will go to the trash, where you can choose to empty the trash to permanently delete data or restore spaces -![](/images/2025-02-14-14-34-22.png) +Open Space trash from the space switcher -### Shared with Me +## Shared with Me When someone shares a base with you as a collaborator, the base appears under **Shared with me** in the space sidebar. @@ -50,7 +66,7 @@ Bases shared with you are different from bases in your own spaces: For public base sharing, see [Base](/en/basic/base). -### Space Settings +## Space Settings * Click the "···" button in the upper right corner of the space to open the space menu * Click Space Settings @@ -59,7 +75,7 @@ Space settings now open in the same settings dialog as personal settings. Use th **General** -In the General page, you can rename or delete the space. +In the General page, you can edit **Space name** and view the Space ID. **Collaborators** diff --git a/en/basic/space/base-invite.mdx b/en/basic/space/base-invite.mdx index 4fe80a0e..89e28ce1 100644 --- a/en/basic/space/base-invite.mdx +++ b/en/basic/space/base-invite.mdx @@ -1,22 +1,54 @@ --- title: "Base Invitation" -description: "If you want collaborators to have access to a specific base rather than all bases in the space, you can invite users to become base collaborators for that particular base" +description: "Manage permissions at the base level — invite members to a specific base without granting access to the entire space, enabling more granular and secure data collaboration." --- -### Adding Base Collaborators +## What is a Base Collaborator? -Enter the base and click the invite button to invite users to the base. +A base collaborator is a member invited to a specific base only. Unlike space collaborators, they can only access the bases they've been invited to and cannot see other bases in the space. -![](/images/2025-02-14-14-52-57.png) +## Adding Base Collaborators -In the base invitation interface, you can see all users who have permission to access the current base, including space collaborators, who will have "Space" indicated next to their names. +Enter any base and click the `Invite` button in the top-right corner. Two methods are supported: -### Permission Types +- **Invite by email**: Enter the recipient's email address, set the base permission level (e.g. "Creator"), and click **Send Invitation**. +- **Invite by link**: Switch to the "Invite via Link" tab to generate a dedicated invitation link. Copy and share the link — recipients can join by clicking it. -Base collaborator permissions are divided into: +Base invitation methods -* Creator: Can perform creation actions, modify table structure, edit automations, enable authority matrix. -* Editor: Can modify data. -* Commenter: Can comment on records but cannot modify data. -* Viewer: Can view but cannot comment. +In the invitation panel, you can view all users who currently have access to the base: +- **Base collaborators**: Members invited directly to this base only. +- **Space collaborators**: Shown with a "Space" badge next to their name, indicating they are space-level members who automatically inherit access to this base. + +Base collaborators list + +The base offers four permission roles to support different levels of collaboration. For a detailed permission comparison, see [Permission Details](/en/basic/space/space-permission). + +For finer-grained control at the table, field, or record level, use the [Authority Matrix](/en/basic/authority-matrix) feature. + +| Role | Description | +| ---- | ----------- | +| Creator | Can perform creation actions, modify table structure, edit automations, and enable authority matrix. | +| Editor | Can modify data. | +| Commenter | Can comment on records but cannot modify data. | +| Viewer | Can view but cannot comment. | + +## Use Cases + +Base invitation is designed for external collaborators. For example, a freelance designer hired to organize an asset library can be invited to that base alone with **Editor** permission, without seeing any other bases in the space. + +## Notes + +- **Permission inheritance**: A space Manager automatically has full access to all bases in that space and cannot be downgraded at the base level. +- **Link security**: Anyone who obtains an invitation link can attempt to join the base. If a link is leaked, you can revoke it by clicking the X next to it in the invitation panel. + +When the [Authority Matrix](/en/basic/authority-matrix) and [Permission Details](/en/basic/space/space-permission) coexist, only **Manager** users are exempt from Authority Matrix restrictions — all other users are subject to it. diff --git a/en/basic/space/billing.mdx b/en/basic/space/billing.mdx index 15fe806e..e154e4d5 100644 --- a/en/basic/space/billing.mdx +++ b/en/basic/space/billing.mdx @@ -14,7 +14,7 @@ Only **Space Owners** have access to billing settings. To access: 2. Select **Billing** under **Space** Billing settings overview diff --git a/en/basic/space/space-invite.mdx b/en/basic/space/space-invite.mdx index ad21f3cf..5282170a 100644 --- a/en/basic/space/space-invite.mdx +++ b/en/basic/space/space-invite.mdx @@ -3,43 +3,65 @@ title: "Space Invitation" description: "Invite others to become space collaborators via email or link" --- -### What is a Space Collaborator? +## What is a Space Collaborator? When you share a space with another user, they become a space collaborator with access to all bases within that space. -> If someone only needs to work on specific bases in your space, consider making them [Base Collaborators](/en/basic/space/base-invite). You can learn more about collaborators and permission levels in the collaboration guide. +## Adding Space Collaborators -When adding new users to a space, you can assign the following roles: - -* Manager: Responsible for administration, has full permissions including user management, tables, automations, and enabling authority matrix. -* Creator: Can perform creation actions, modify table structure, edit automations, and enable authority matrix. -* Editor: Can modify data. -* Commenter: Can comment on records but cannot modify data. -* Viewer: Can view but cannot comment. - -### Adding Space Collaborators - -To perform these actions, you need owner or creator permissions. +Creating an invitation link requires Manager or Creator space permissions. 1. Click the space where you want to add collaborators in the left sidebar. 2. Click the "Invite" button near the top of the space. 3. This opens the space invitation window, where you'll see options to invite via email or link. You'll also find previously configured "Invitation Links" and existing "Space Collaborators" in their respective sections. -4. To invite via email, enter an email address or multiple addresses (separated by commas). Then, set the permission level you want users to have for all bases in the space. Finally, click send email to invite users to collaborate. -5. To invite via link, click the "Invite via Link" option. Then, set the permission level that the invitation link will grant for all bases in the space. Finally, click create link. You can now click the clipboard icon next to the created link to share it however you see fit. +4. **Email invitation**: Enter an email address or multiple addresses (separated by commas). Then, set the permission level you want users to have for all bases in the space. Finally, click send email to invite users to collaborate. + +Invite space collaborators by email -![](/images/2025-02-14-14-51-22.png) +5. **Link invitation**: Click the "Invite via Link" option. Then, set the permission level that the invitation link will grant for all bases in the space. Finally, click create link. You can now click the clipboard icon next to the created link to share it however you see fit. -Remember that space collaborators will have full access to all bases and interfaces within the space. If you only want to share specific bases with someone, you might want to make them base collaborators instead. +Invite space collaborators by link -### Deleting Invitation Links +Space collaborators have access to all bases in the space. If someone only needs to work on specific bases, consider making them [Base Collaborators](/en/basic/space/base-invite). + +## Deleting Invitation Links To delete an invitation link, click the X on the right side of the link. This will invalidate the link, and anyone trying to use the old link will not be able to access the space. -### Removing Space Collaborators +Delete a space invitation link -You can remove space collaborators from the space sharing window. Click the X next to the user you want to remove. A few things to note: +## Removing Space Collaborators -* Only users with owner or creator space permissions can remove users with equal or lower permission levels. -* You can only remove your own access if there is at least one other owner in the space. -* Base collaborators cannot be removed from this window. +You can remove space collaborators from the space sharing window. Click the X next to the user you want to remove. A few things to note: +Remove a space collaborator + +* **Permission restriction**: Only users with Manager or Creator permissions can remove other collaborators. +* **Self-removal**: You can remove your own access if there is at least one other Manager in the space. +* **Scope**: Base collaborators cannot be removed from this window. + +When adding new users to a space, you can assign the following roles (see [Permission Details](/en/basic/space/space-permission)): + +| Role | Description | +| ---- | ----------- | +| Manager | Responsible for administration, has full permissions including user management, tables, automations, and enabling authority matrix. | +| Creator | Can perform creation actions, modify table structure, edit automations, and enable authority matrix. | +| Editor | Can modify data. | +| Commenter | Can comment on records but cannot modify data. | +| Viewer | Can view but cannot comment. | diff --git a/en/basic/table.mdx b/en/basic/table.mdx index 0e178ca0..fba2b8ce 100644 --- a/en/basic/table.mdx +++ b/en/basic/table.mdx @@ -4,116 +4,160 @@ description: "Create, import, share, and manage tables in a base." --- {/* mintlify-resync: 2026-05-14 */} -Each base can contain multiple tables. A table is a structured data storage method used to store collections of related data within a base. +Each base can contain multiple tables for storing and managing related data. Teable tables are equivalent to database tables — understanding [how they differ from spreadsheets](/en/compare/teable-vs-excel) will help you get the most out of Teable. -Each table typically contains multiple rows and columns, where each column represents a field and its attributes, while each row represents a record or data item. Tables are core components of bases, used for collecting, storing, and processing data for subsequent retrieval, manipulation, and base construction. - -Teable's tables are equivalent to tables in a database, a concept that helps understand [the differences between Teable and traditional spreadsheets](/en/compare/teable-vs-excel) for better mastery of Teable. +## Create and Manage Tables ### Adding Tables -1. Enter a specific base -2. Click the + button in the directory - -You can choose to: +In a base, click the `+` button in the directory and choose to: -1. Create a new table -2. Import a table from a CSV file -3. Import a table from an Excel file +Add table menu -For specific import processes, see the [Import section](/en/basic/table/import) +1. Create a new blank table +2. Import from a CSV file +3. Import from an Excel file -### Modifying Table Names +See the [Import section](/en/basic/table/import) for details. -1. In the application, double-click the table name in the directory -2. Modify the table name -3. Click any area outside the input box +### Renaming & Deleting -### Deleting Tables +- **Rename**: Double-click the table name in the directory, edit it, then click anywhere outside to save. +- **Delete**: Hover over the table in the directory, click `...`, then select **Delete**. -1. Hover over the table in the directory, click the "..." button to open the menu -2. Click the delete button in the menu +Rename or delete a table ### Trash -Click the trash button in the upper left of the base to enter the table trash interface and perform the following operations. +Click the trash icon in the upper left of the base to manage deleted tables. -> Table data in the trash can still be accessed by database connections +Table trash -* Empty trash: Permanently delete all table data -* Restore: Restore tables back to the base +- **Restore**: Bring the table back to the base with all data intact +- **Empty trash**: Permanently delete all trashed tables -### Designing Tables +## Design Tables -Click the design button in the menu to enter the table design page, where you can view the table's basic properties, including: +Click **Design** in the table menu to view the table's basic properties: -**Table Related** +Table design -* Base Schema the table belongs to -* Table name and its name in the physical table -* Table description -* Modification time +**Table Information** -**Database Connection** +Schema, physical table name, description, and last modified time -This shows how to directly access the current database through database connections +**Field Properties** -* Database connection -* Number of database connections +| Property | Description | +| :--- | :--- | +| **id** | Field ID | +| **name** | Field name | +| **dbFieldName** | Field name in the physical database | +| **type** | Field type | +| **description** | Field description | +| **graph** | View current field dependencies | +| **cellValueType** | Current field value type | +| **isLookup** | Whether it's a field looked up from a linked table | +| **isMultipleCellValue** | Whether it's an [array value field](/en/basic/field/common/is-multiple-value) | +| **isComputed** | Whether it's a computed field (record values of computed fields cannot be modified) | +| **isPending** | Whether it's in calculation | +| **hasError** | Whether there are calculation errors | +| **notNull** | Whether non-null validation is enabled | +| **unique** | Whether unique value validation is enabled | -**Field Information** +## Share and Access Tables -Detailed field properties +### Share a Table -* id: Field ID -* name: Field name -* dbFieldName: Field name in the physical database -* type: Field type -* description: Field description -* graph: View current field dependencies -* cellValueType: Current field value type -* isLookup: Whether it's a field looked up from a linked table -* isMultipleCellValue: Whether it's an [array value field](/en/basic/field/common/is-multiple-value) -* isComputed: Whether it's a computed field (record values of computed fields cannot be modified) -* isPending: Whether it's in calculation -* hasError: Whether there are calculation errors -* notNull: Whether non-null validation is enabled -* unique: Whether unique value validation is enabled +In a table, click **Share** in the upper-right corner, switch to **Share table**, and turn on **Share to web** to generate a share link. -![](/images/2025-02-14-15-15-36.png) +Table share entry +Share table to web -### Share a Table +After table sharing is enabled, the **Share** button appears in a gray shared state in every view in that table. This state comes from table sharing; it does not mean each view has been shared separately. -In a table, click **Share** in the upper-right corner, switch to **Share table**, and turn on **Share to web** to generate a table share link. +Link permissions: -For table shares, you can configure these link permissions: +Table share permissions -- **Can view**: Anyone with the link can view table data. -- **Can edit**: Logged-in users can edit records in the shared table. -- **Can save as copy**: Anyone with the link can save a copy to their space. +- **Can view**: Anyone with the link can view table data +- **Can edit**: Logged-in users can edit records in the shared table +- **Can save as copy**: Anyone with the link can save a copy to their space -You can also configure **Allow viewers to copy data**, **Restrict by password**, regenerate the link, delete the share link, and copy the embed config. +You can also configure **Allow viewers to copy data**, **Restrict by password**, regenerate or delete the link, and copy the embed config. -If you only need to share the current view, switch to **Share view**. For details, see [Share view](/en/basic/view/toolbar/share). +To share only the current view, switch to **Share view**. For details, see [View toolbar](/en/basic/view/toolbar). ### Ways to Access Tables -Users can access tables in two ways on Teable Cloud: +Tables default to a [Grid view](/en/basic/view/grid) and are also accessible via the [API](/en/api-doc/overview). You can create additional views — such as Kanban — to suit different workflow needs. + +## Search and Downloads -* [Grid view](/en/basic/view/grid) -* [API overview](/en/api-doc/overview) +### Global Search -Views are the most intuitive of these methods. Users can search, manipulate, and build complex applications through various views. +Table global search -Newly added tables will default to include a [Grid View](/en/basic/view/grid) for users to quickly start processing data. +- **Date fields can be searched** in addition to text fields — search a date value to find matching records +- When hiding non-matching rows, the visible result set narrows to matching records only -### Global Search +### Attachment Downloads + +Bulk attachment downloads respect the current search results and include only attachments from matching records. + +Bulk attachment download entry + +In the bulk download dialog, use **Attachment name prefix** to name ZIP files by default index, a chosen field, or **No prefix** to keep original filenames; duplicates get an auto-appended suffix. -* Tables support global search. In addition to text fields, **date fields can also be searched**, so you can look up a specific date value to find matching records. -* When you search and choose to hide non-matching rows, the visible result set narrows to the matching records. -* If you bulk-download attachments from an attachment field menu, the download also respects the current search results and includes only attachments from matching records. -* In the bulk attachment download dialog, use **Attachment name prefix** to choose how files are named in the ZIP. You can keep the default attachment index, choose another field as the prefix, or select **No prefix** to keep original filenames. If duplicate filenames appear, Teable adds a suffix to keep each ZIP entry unique. +Bulk attachment download options -### Table Features +## FAQ -Creating Views: Users can create various views to operate on tables, with different views meeting different scenario needs. For example: Grid views have the highest data density and operate similar to spreadsheets, making them the easiest to learn. While Kanban provides better support for project management scenarios. + + + Teable is stricter than Excel — each column has a fixed data type, and a Number column only stores numbers. This constraint ensures data integrity and is the foundation for advanced filtering and automation. See [Teable vs Excel](/en/compare/teable-vs-excel) for details. + + + Check whether the table is referenced by **linked fields** in other tables. Deleting the source table may cause data display issues in linked tables. + + diff --git a/en/basic/table/export.mdx b/en/basic/table/export.mdx index d28f796a..2566d240 100644 --- a/en/basic/table/export.mdx +++ b/en/basic/table/export.mdx @@ -1,32 +1,41 @@ --- title: "Export" +description: "Export an entire table or the data currently shown in a view as a CSV file." --- -{/* mintlify-resync: 2026-05-14 */} -## Basic operations +Teable supports exporting an entire table or only the data currently shown in a view. Exported files use CSV format. -Teable supports two export scopes to fit different data export needs. + + + Export the entire table when you need the full raw data. Export a specific view when you only need the data currently shown in that view. + + + To export an entire table, open the target table menu in the left directory. To export a view, switch to the target view and open the view menu. + + + Select **Download CSV**. Teable generates the file according to the selected export scope. + + -- Format: CSV (Comma-Separated Values) +## Export Flow -### 1. Export an entire table (all data) +To export an entire table, hover over the target table name in the left directory, click the `...` button on the right, then select **Download CSV**. -Use table export when you need all raw data in the table, including hidden fields and records. +Export an entire table -- **Steps**: - 1. In the left sidebar, hover over the target table name - 2. Click the `...` button that appears on the right - 3. Select **Download CSV** +To export a specific view, switch to the target view, confirm the filters, sorting, and hidden-field settings, then click the `...` menu next to the view name and select **Download CSV**. -![](/images/2025-12-01-23-33-11.png) +Export a specific view -### 2. Export a specific view (filtered data) +## Notes -Use view export when you only want to export the data currently shown in a view, such as "Orders this month" or "Completed tasks". - -- **Steps**: - 1. Switch to the target view, making sure the desired filters, sorting, or hidden fields are applied - 2. Click the `...` menu next to the view name, or the view settings button - 3. Select **Download CSV** - -![](/images/2025-12-01-23-34-44.png) +- **Entire table export**: Includes the raw table data, including hidden fields and records. +- **View export**: Exports only the data currently shown in the view. Use it for filtered, sorted, or hidden-field results. diff --git a/en/basic/table/import.mdx b/en/basic/table/import.mdx index 91a20fad..1d69d83c 100644 --- a/en/basic/table/import.mdx +++ b/en/basic/table/import.mdx @@ -1,46 +1,63 @@ --- title: "Import" +description: "Import CSV or Excel files to create a new table or append data to an existing table." --- {/* mintlify-resync: 2026-05-14 */} -Teable makes it easy to import data from CSV and Excel files into tables. This article will guide you through the process of importing spreadsheet files into tables. +Use import to initialize a new table or append new data to an existing table. Excel files are limited to **5MB**. If you need to import a larger dataset, save it as **CSV** first and then import it. -## Importing a New Table - -Step 1: Click the + Button in the Left Menu and Select File Type - -Step 2: Configure Field Types - -After uploading the file, Teable will automatically predict and match field types based on the first 5,000 rows of data. You can also manually adjust these types according to your needs. - -![](/images/ji-ben-gong-neng/shu-ju-biao/6ecf5efee4ca8c93.png) - -Step 3: Import Success - -> Important: During the import process (before receiving success or failure notification), please do not delete columns or change column types to avoid affecting the import results. - -Click import, and Teable will asynchronously import the data in the background. You will be notified of success or failure (including the reason for failure). - -![](/images/ji-ben-gong-neng/shu-ju-biao/07d7e382b0ecbaf3.png) - -## Incremental Import - -For existing tables, Teable also supports incremental data import. - -Step 1: Click Table Options, Select Import Data, and Choose File Type - -![](/images/ji-ben-gong-neng/shu-ju-biao/39fb770b88257a59.png) - -Step 2: Map Import Fields - -After uploading your file, select which columns should map to which fields in your table. Once configured, click import to proceed. - -![](/images/ji-ben-gong-neng/shu-ju-biao/227900d6ec43a16e.png) - -Step 3: Import Success - -![](/images/ji-ben-gong-neng/shu-ju-biao/8c22b9e21ce63584.png) + + + To create a new table, click `+` at the top of the left directory and choose `From CSV` or `From Excel`. To append data to an existing table, choose `Import data` from the target table menu. + + + Select the CSV or Excel file you want to import. Excel files must be **5MB** or smaller. + + + Review the preview after upload. When creating a new table, you can adjust field types. When appending to an existing table, confirm how file columns map to target fields. + + + Click **Import**. Teable processes the data in the background and notifies you when the import succeeds or fails. + + + + +Before the completion notification arrives, do not delete the table being generated, delete fields, or change field types. These changes may affect the import result. + + +## Import Flow + +Click `+` at the top of the left directory and select CSV or Excel according to your file type. + +Import a new table from the menu + +After upload, Teable predicts field types from the first 5,000 rows of data. You can adjust them before importing. + +Import preview and field settings + +To append data to an existing table, open the table menu, select **Import data**, and choose the file type. + +Import data from the table menu + +After upload, map file columns to fields in the target table, then click **Import**. Teable processes the data in the background and notifies you when the import succeeds or fails. + +## Notes + +- **First row detection**: Teable treats the first row as the header row by default. Make sure the first row contains clear column names, not data. +- **Date format**: Teable can recognize common date formats such as `YYYY-MM-DD`. For unusual formats, standardize them before import, or import them as text and convert the field type later. diff --git a/en/basic/view/calendar.mdx b/en/basic/view/calendar.mdx index 443f100b..fed6bad8 100644 --- a/en/basic/view/calendar.mdx +++ b/en/basic/view/calendar.mdx @@ -1,58 +1,67 @@ --- title: "Calendar" -description: "The Calendar view displays your data in a calendar format, allowing you to visually view and manage date-based records. It's particularly suitable for managing meeting schedules, project timelines, event planning, and other time-related content. Through the Calendar view, you can easily view task distribution and manage time effectively." +description: "View and manage records by date, such as meetings, events, schedules, and project timelines." --- -### Creating a Calendar View +Calendar view displays records on a calendar. If a table has a single-value date field, you can use Calendar view to track tasks, meetings, events, publishing plans, or project milestones. -1. Click the "+" button in the top left corner. +## Use Cases -2. Select Calendar view from the dropdown menu. +| Scenario | Good for | +| --- | --- | +| Meetings and appointments | Meeting times, customer visits, interviews | +| Project scheduling | Start dates, due dates, milestones | +| Content planning | Publish dates, campaign dates, marketing schedules | +| Multi-day items | Projects, events, leave requests, or work with start and end dates | -### Basic Calendar View Settings +## Create a Calendar View -#### Configure Date Field + + + Click `+` next to the view tabs. + + + Select **Calendar view** from the view types. + + + Teable selects suitable date fields when available. Open **Calendar config** to change the **Start date field**, **End date field**, or **Title field**. + + -1. Click the "Start Date Field" dropdown menu on the left. +## Date Field Settings -2. Select the date field to use as the event start time. +| Setting | Description | +| --- | --- | +| Start date field | Controls which day the record appears on | +| End date field | Shows records that span multiple days or have a duration | +| Title field | Controls the text shown on calendar records | -3. Optionally select an "End Date Field" to display spanning events. +If the table does not have a date field, Teable may prompt you to add start and end date fields. -#### Color Configuration +## Color Settings -1. Click the "Color Display" option on the left. +Calendar records can use colors to separate different types of work. -2. You can choose: - - Custom Color: Select a fixed color from the color palette - - By Field: Display different colors based on field values +| Color display | Description | +| --- | --- | +| Customize color | Uses one fixed color for this Calendar view | +| Align with records | Uses colors from a Single Select field, such as status or type | -### Calendar Interface Operations +## Navigate the Calendar -#### View Navigation -- Use left and right arrows to switch months -- Click "Today" to quickly return to the current date -- Display current year and month +- Use the left and right arrows to switch months. +- Click **Today** to return to the current date. +- Click a record on the calendar to open its details. -#### Event Operations +## Create and Adjust Events -##### Create New Event +- Hover over a date cell and click `+` to create a new record on that date. +- To create a multi-day item, set an end date in the record details, or drag the event edge when separate start and end date fields are configured. +- Drag an existing record to another date to update its date fields. +- Right-click a record to duplicate or delete it. -1. Click directly on a date cell to create a new event. +## Notes -2. Drag to select a time period to create multi-day events. - -##### Edit Event - -1. Click an existing event to edit it. - -2. You can: - - Modify event content - - Adjust dates - - Update other field information - -##### Move Events - -You can drag and drop to: -- Move events to other dates -- Adjust event duration (if end date is set) +- Calendar view depends on single-value date fields. If a configured date field is deleted or changed, review **Calendar config**. +- Calendar view changes how records are displayed. It does not change existing fields unless you choose to add date fields from the Calendar prompt. +- Create, edit, delete, drag, and resize actions depend on your view, record, and field permissions. diff --git a/en/basic/view/form.mdx b/en/basic/view/form.mdx index 33ef8bb4..0a4dda40 100644 --- a/en/basic/view/form.mdx +++ b/en/basic/view/form.mdx @@ -1,69 +1,73 @@ --- title: "Form" -description: "Learn how to use Teable forms to collect information from anyone and automatically save it to your Teable base. Each form submission creates a new record in the table where the form view was created." +description: "Use a Form view to collect submissions and save each response as a new record in the current table." --- -### Overview +Form views are generated from the current table. Each submission creates a new record in the table where the form view was created. Use forms to collect feedback, registrations, reimbursement requests, customer details, and other structured data. -Forms are perfect for various purposes like recording expenses, collecting feedback, creating polls and quizzes, gathering customer information, and more. Teable forms support file attachments, work well on mobile devices, and connect to the Teable API. Unlike other products that require building forms from scratch, Teable's form views are automatically generated from your existing tables, then allow you to rearrange and remove fields. + + + Use App Builder for conditional logic, multi-step flows, branded pages, or more complex interactions. + + + Use a Form view when you only need field names, subtitles, required fields, and basic sharing. + + -#### Step 1: Add a New Form View +You can also describe your collection needs in [AI Chat](/en/basic/ai/ai-chat) and let AI generate a form view from the current table. -To create a new form view, navigate to the table where you'll collect new data. Open the view sidebar and click the form option under the create heading. If your view creation section is collapsed, you'll need to expand it first. +## Use Cases -#### Step 2: Initial View Settings +| Scenario | Good for | +| --- | --- | +| Information collection | Customer details, registration forms, surveys, feedback | +| Internal requests | Reimbursements, purchasing, leave requests, access requests | +| File submission | Resumes, receipts, contracts, screenshots | +| Lightweight workflow entry | Save external submissions directly as table records | -You'll have the opportunity to give your form view a unique title and set the view as collaborative or personal. Note that you can lock the form view only after completing the initial form view settings. After setting the title and view permissions, click create new view. +## Create a Form View -#### Step 3: Add, Hide, and Reorder Fields + + + Go to the table that should store form submissions. + + + Open the view sidebar, click `+`, and choose **Form view**. + + + Enter a form view name. + + + After creating the view, Teable opens the form builder for field setup. + + -This opens the form builder where you can further customize your form before sharing it with others. Advanced plans offer the ability to add cover images or logos to forms. You can add a description to your form by clicking the header area and adding a description. +## Configure Form Fields -Fields on the form are automatically populated based on all fields shown in the first grid view of the table. +Form fields are generated from the table fields. In the form builder, you can adjust what submitters see. -To change the order of fields on your form, click a field and use its drag handle to move it. To hide a field from the form, you can click the hide button in the top right corner of the field you wish to hide, or drag and drop the field to the left side of the form builder. To add a field to the form, drag it from the left side onto the form. If you realize you want to add a field to your form that doesn't yet exist in your table, you can click the + Add field to this table button in the fields sidebar. Sometimes you may need to return to the form later to add or remove fields. Simply return to the form's view and adjust the settings. You can also customize field settings by clicking the field, clicking the dropdown arrow next to the field name, and selecting customize field type from the dropdown menu. This opens the same field customization menu you see when customizing fields in grid view. +| Action | Description | +| --- | --- | +| Reorder fields | Drag fields to change their order on the form | +| Hide fields | Click the hide button on a field, or drag the field to the hidden area on the left | +| Add fields | Drag a field from the left sidebar, or click `+ Add field to this table` | +| Rename field | Click a field and rename it. The name shown on the form updates with the field name | +| Field description | Add a field description to explain what the submitter should enter | +| Require a field | Turn on required so the form cannot be submitted without that field | -#### Step 4: Customize Form Fields +## Form Appearance -Beyond customizing which fields will appear on your form and their order, you can adjust how fields display to end users. Clicking any field in the form builder will pop up numerous display options. For all field types, you can change the name that displays on the form and add a subtitle to provide helpful context. Some field types offer additional display setting options, which are covered in the sections below. +Form appearance supports a cover image, logo, and submit button text. The cover area uses a fixed height, so avoid placing important text or key information in an image that may be cropped. -You can also toggle the required option to make filling out a field necessary before submitting the form. Note that if you make a checkbox field required, the checkbox must be checked to submit the form. +## Share the Form -#### Step 5: Share Form URL +After configuring the form, click **Share form** in the top-right corner of the table, copy the form link, and send it to submitters. You can also click preview to open the public form page in your browser. -Once you've finished building your form, you can click the share form button in the view bar. This will give you a link you can copy and paste. Clicking the preview button will also take you directly to the form share link in your browser. The sections below will cover more form sharing options. +## Submission Settings -### Additional Form Configuration Options +| Setting | Description | +| --- | --- | +| Password protection | Submitters must enter the correct password before submitting | +| Track form submitters | Requires submitters to log in to Teable and records submitter information in the Created By field | -#### Adding a Cover Image - -To add a cover image (requires an advanced plan), click add cover image in the gray area and upload your desired image. You can also crop or rotate the image in the file picker. Note that the form cover image area is always 240px tall and the width of your browser window. It's best to use cover images as background graphics that add an interesting feel to your form rather than for important information that might get cropped. - -#### Adding Password Protection - -When sharing a form, you can choose to set a password. In this case, the form can only be submitted after entering the correct password. - -#### Track Form Submitters - -Enabling this feature will automatically collect form submitter information so form responses can be traced to specific individuals. A few notes about expected behavior: - -* Form submitters will be asked to log into Teable (if they aren't already logged in on their browser) or create a Teable user account so their name and email address can be collected with their form submission. - -* The responder's information will appear in the "Created By" field in the table where the form was created. - -### Conditional logic Form - -#### Choosing the Right Approach - -- **Form View (basics)**: Best for lightweight collection with basic field presentation and required fields (see Step 4 above for details). - -- **App Builder (advanced, recommended)**: Best for a richer submission experience—conditional logic, multi-step flows, branded pages, and more complex interaction. - - **Conditional Logic**: To show or hide follow-up fields based on conditions, build the submission experience in [Teable AI App Builder](/en/basic/ai/app-builder). Start from a short prompt, generate a first version, then refine the flow and UI. - - **Prompt to App**: Describe what you want, generate a working first draft, then iterate. - - **Start from your Base**: Click **Create App** to generate an app linked to your data. - - **Start from AI Chat**: Open [AI Chat](/en/basic/ai/ai-chat) and ask AI to create an app for your table (for example: "Create an intake app for this table"). After the app is created, continue editing in App Builder. - - **Publish & share**: When ready, publish your app to get a secure public URL. - -> **When to use App Builder vs AI Chat**: Use App Builder to create custom interfaces and standalone apps. For interactive data analysis and ad-hoc questions within the database, use [AI Chat](/en/basic/ai/ai-chat). - -To explore more AI-powered workflows, see the [AI overview](/en/basic/ai/overview). +When submitter tracking is enabled, visitors who are not logged in must log in or create a Teable account before submitting. diff --git a/en/basic/view/gallery.mdx b/en/basic/view/gallery.mdx index 53340e82..be49436c 100644 --- a/en/basic/view/gallery.mdx +++ b/en/basic/view/gallery.mdx @@ -1,61 +1,63 @@ --- title: "Gallery" -description: "Gallery view is a view type that displays data in a grid of images, particularly suited for managing and showcasing image-based content. It allows you to browse all records with images in a visual way, making it perfect for managing design portfolios, product catalogs, photo libraries, and similar scenarios." +description: "Display records as image cards for product catalogs, asset libraries, and portfolios." --- -### Creating a Gallery View +Gallery view displays records as image cards. Use it when images are the main content of the table, such as product photos, design drafts, campaign assets, photo libraries, or portfolios. -1. Click the button to create a new view. +## Use Cases -2. Select Gallery View from the dropdown menu. +| Scenario | Good for | +| --- | --- | +| Product catalogs | Product images, models, prices, status | +| Asset management | Design drafts, campaign assets, ads, screenshots | +| Portfolios | Project covers, case images, design work | +| Image review | Filter image records by status, owner, or tags | -3. Configure gallery view settings including card settings, filters, and sorting options. +## Create a Gallery View -### Basic Operations in Gallery View + + + Click `+` next to the view tabs. + + + Select **Gallery view** from the view types. + + + After the view opens, use **Customize cards**, filters, and sorting to adjust how records appear. + + -#### Configuring Cover Images +## Set the Cover Image -1. Click the "Card Settings" button in the toolbar. +Gallery view can use an attachment field as the card cover. If the table already has an attachment field, Teable selects one by default. -2. Select the attachment field to display as the cover. +| Setting | Description | +| --- | --- | +| Cover field | Choose an attachment field to use as the card cover, or choose **No image** | +| Multiple files | If the selected attachment field has multiple files, the first file is shown first on the card; users can switch between files from the card carousel | +| Fit | When enabled, the whole image fits inside the cover area; when disabled, the image fills the cover area and may be cropped | -3. If a record contains multiple images, the first image will be used as the cover by default. +## Configure Card Information -#### Adjusting Image Size +Click **Customize cards** in the toolbar to choose which fields appear on cards, reorder fields, and turn **Hide field name** on or off. -You can adjust the display size of images through view settings: +Keep only fields that help identify the record, such as name, status, owner, price, or tags. Too many fields make Gallery view harder to scan. -1. Click the "Card Settings" button in the toolbar. +## View and Edit Images -2. Toggle the "Fit" switch on or off +- Click a cover image to open the preview. +- In preview mode, switch between files, zoom or rotate images, or download the file. +- Click the card body to open the record. -#### Customizing Card Information +## Manage Records -1. Click the "Card Settings" button in the toolbar. +- Click **Add record** in the toolbar to add a record. If an attachment field is available, you can upload files from the record editor. +- Right-click a card to delete the record or use other record actions. +- Use filters and sorting to manage image records by status, category, or owner. -2. Select which field information to display below the images. +## Notes -3. You can adjust the display order of fields and whether to show field names. - -#### Image Operations - -1. Click an image to view it in full size. - -2. In full-size mode, you can: - - Swipe left or right to browse other images - - Use zoom functionality to examine image details - - Download the original image - -#### Record Management - -1. Adding new records: - - Click the "New" button at the bottom of the interface - - Upload images and fill in related information - -2. Editing records: - - Click the information area below the image - - Modify content in the popup editor - -3. Deleting records: - - Right-click the image and select "Delete Record" - - Or use the delete option in edit mode +- Gallery view works best when attachment images are central to the table. If records are mostly text or numbers, Grid view is usually faster. +- Field display settings in Gallery view only affect the current view. They do not delete field content. +- Create, edit, delete, and file actions depend on your view, record, and field permissions. diff --git a/en/basic/view/grid.mdx b/en/basic/view/grid.mdx index b98ff6fc..9ed066ab 100644 --- a/en/basic/view/grid.mdx +++ b/en/basic/view/grid.mdx @@ -1,83 +1,106 @@ --- title: "Grid" -description: "Grid view is a data presentation format in Teable where data is displayed in a spreadsheet-like layout, with each record occupying a row and each field occupying a column. Grid view can be used for viewing, editing, and analyzing data." +description: "Display records in rows and columns for structured viewing, editing, and data cleanup." --- {/* mintlify-resync: 2026-05-14 */} -### Creating a Grid View +Grid view is the most common view in Teable. Each record appears as a row, and each field appears as a column. Use it for daily data entry, bulk editing, sorting, filtering, and quick checks. -As mentioned at the beginning, every table must have at least one grid view by default. Therefore, the system automatically creates a grid view whenever you add a new table. To create a new grid view in an existing table, follow these steps: +## Use Cases -1. Navigate to your space, select the base, then select the table where you want to add a new grid view. +| Scenario | Recommended setup | +| --- | --- | +| Maintain data day to day | Enter, edit, copy, and paste records directly in the grid | +| Clean up many records | Combine filters, groups, sorts, and hidden fields | +| Check numeric data | Use selection statistics for average, filled count, and sum | +| Work with wide tables | Freeze key columns so identifying fields stay visible | -2. Click the "Views" option near the top left of the screen. This will open the view sidebar. In some tables, the view sidebar may already be open, in which case you can proceed to the next step. +## Create a Grid View -3. Find and click the "Grid+" option under the "Create..." section. +Every new table includes a grid view by default. To create another grid view for a specific workflow: -4. This opens a popup where you can name your new grid view and set view editing permissions (collaborative, personal, or locked). + + + Go to the target table and open the view list on the left. + + + Click `+` at the top of the view sidebar and choose **Grid view**. + + + Enter a view name, set the collaboration mode if needed, and create the view. + + -5. After configuring these settings, click "Create New View." +## Display Settings -6. At this point, you can further configure the view by hiding fields, filtering records, grouping records, sorting records, and more. +### Manage Field Display -### Adjusting Row Height in Grid View +Hide fields tool -By default, grid view displays records with a short row height to maximize record density. In the short row height setting, each record shows one line of text and small attachment thumbnails. If you want to see more text and larger images, you can adjust the row height from the default short setting. +| Action | Description | +| --- | --- | +| Hide fields | Click **Hidden fields** in the toolbar and turn fields on or off | +| Reorder fields | Drag field headers left or right | +| Find fields | Search field names in the hidden fields panel when the table has many fields | -There are four different row height options: +Hidden fields only change the current view. They do not delete fields or record data. -* Short (most compact option, also the default height for new views) +### Adjust Row Height and Field Name Height -* Medium +Click **Row height** in the toolbar to adjust the display density of the table view. -* Tall +Grid view row height menu -* Extra Tall (most spacious option) +- **Row height**: Choose Short, Medium, Tall, or Extra tall to adjust record row height. +- **Field name**: Choose 1 line, 2 lines, or 3 lines to control the display height of column names in the table header. -To change the row height in the current view, click the row height toggle in the view bar and select your desired height. +### Freeze Columns -Shorter row heights allow you to see more records at once, while larger row heights let you see more information for each record. Specifically, larger row heights will show multiple lines of text in text fields, multiple lines in linked records, multiple select options, collaborator fields, and display larger images. +When a table has many fields, freeze key columns so they stay visible while you scroll horizontally. -Changing row height does not affect field header height, which cannot be adjusted. +Grid view freeze divider -If you want to ensure your preferred row height configuration isn't accidentally changed, you can lock the view (coming soon), which will prevent all collaborators from changing the view's configuration until someone with creator permissions unlocks it. +- Drag the freeze divider to freeze the columns on its left. -### Selection Statistics - -When you select a range in grid view, Teable shows **Average**, **Filled**, and **Sum** for numeric field values in the selected range. - -### Hiding Fields in Grid View - -To hide fields in grid view (or show hidden fields), click the "Hide Fields" button in the view bar to open the hide fields dialog. If there are no hidden fields in the current view, the "Hide Fields" button will appear as an eye icon with a line through it and display "Hide Fields." - -If there are hidden fields in the current view, the "Hide Fields" button will have a blue background and (if the window is wide enough) show the specific number of hidden fields, such as "12 Hidden Fields." - -When the hide fields dialog is open, you can see which fields are showing (toggle switch is green and moved to the right) and which fields are hidden (toggle switch is gray and moved to the left). +Freeze up to this field menu in Grid view -Click the toggle switch next to a field name to show or hide that field. +- Right-click a field header and choose **Freeze up to this field** to freeze that field and all fields to its left. -The "Hide All" and "Show All" buttons allow you to quickly hide/show all fields (except the primary field, which cannot be hidden). +## Edit and Review Data -If you have many fields, you can type search terms in the "Find Fields" search box to more easily find the field you're looking for. +### Edit and Work in Bulk -Another way to hide a field is to click on the field header and select "Hide Field" from the dropdown menu. +- **Edit a cell**: Click any cell and enter or change content. +- **View long content**: Double-click a cell, or select it and press Space, to open the full content. +- **Fill by dragging**: Drag the fill handle at the bottom-right corner of a selected cell to copy values downward. -You can also hide or show individual fields in grid view by opening the expanded record. - -### Reordering Fields in Grid View - -You can quickly rearrange the order of fields in your view by clicking and dragging the drag handle on field names. - -You can also move fields directly by clicking and dragging field headers in the grid view. - -Fields cannot be reordered in expanded records. - -### Wrapping Text in Individual Cells +### Selection Statistics -By default, new grid views display rows with a fixed single-line height. However, by expanding the row height, fields containing text will wrap to the next line. +Grid view selection statistics -Shorter row heights allow you to see more records at once, while larger row heights let you see more information for each record. Specifically, larger row heights will show multiple lines of text in text fields, multiple lines in linked records, multiple select options, collaborator fields, and display larger images. +When you select a range of cells, Teable shows **Average**, **Filled**, and **Sum** for numeric values. Use this for quick checks on amounts, counts, and scores. -To expand a single row at a time, you can press the spacebar when any cell in the selected row is focused. +## Notes -You can also view the full content of the current cell by clicking on it, then use arrow keys to quickly move between different cells. +- Hidden fields, sorting, filtering, grouping, and similar settings apply only to the current view. +- To prevent accidental configuration changes, lock the view. Only users with permission can unlock or change it. diff --git a/en/basic/view/kanban.mdx b/en/basic/view/kanban.mdx index 0a4ef5af..371b16cd 100644 --- a/en/basic/view/kanban.mdx +++ b/en/basic/view/kanban.mdx @@ -1,107 +1,76 @@ --- title: "Kanban" -description: "The Kanban view provides a dynamic way to manage data by displaying records as cards on a board. This intuitive layout clearly reflects task status or priority. Overall, the Kanban view helps visualize your work content and maximize efficiency, making it ideal for project management and workflow tracking." +description: "Display records as cards grouped by a field, useful for tracking status, stages, and workflows." --- -### Creating a Kanban View +Kanban view displays records as cards and groups them into columns by field value. Use it for task status, sales stages, content workflows, recruiting pipelines, and other stage-based work. -1. Click the button to create a new view. +## Use Cases -2. Select Kanban view from the dropdown menu. +| Scenario | Good for | +| --- | --- | +| Project tasks | Track tasks by Not started, In progress, Done | +| Sales pipeline | Manage customers by Lead, Opportunity, Negotiation, Closed | +| Content workflow | Track content by Idea, Writing, Review, Published | +| Hiring pipeline | Manage candidates by Screening, Interview, Offer, Hired | -3. Now you can configure the Kanban view settings, including grouping settings, card settings, filters, and sorting. +## Create a Kanban View -### Group-Related Operations + + + Click `+` next to the view tabs. + + + Select **Kanban view** from the view types. + + + Choose the field used to create stacks, such as status, stage, owner, or date. + + -#### Change Grouping Field +## Stack Settings -All fields except attachments are supported as grouping fields. +Kanban view can stack records by most fields. Attachment and Button fields are not available as stacking fields. -1. Click the dropdown icon next to the group title. +| Action | Description | +| --- | --- | +| Change stacking field | Click **Stacked by [field]** in the toolbar and choose another stacking field | +| Hide empty stacks | Turn on **Hide empty stack** in stacking field settings | +| Collapse stacks | Choose **Collapse stack** from the stack menu to show the stack as a vertical bar | +| Sort stacks | When stacked by a Single Select field, drag stacks to reorder them | -2. Select a grouping field from the popup dialog or create a new grouping field. +## Manage Stacks -3. If you want to hide empty groups, enable the "Hide Empty Groups" option. +When the stacking field is a Single Select field, you can manage options directly from the board: -4. Click "Done" to save changes. +- Click **Add stack** to create a new option. +- Choose **Rename stack** from the stack menu to rename an option. +- Choose **Delete stack** from the stack menu to delete an option. -#### Collapse Groups +These actions change the options in the corresponding Single Select field. Confirm the impact before changing stacks used by other views or workflows. -1. Click the dropdown icon next to the group title. +## Configure Cards -2. Select "Collapse Group" from the dropdown menu. +Click **Customize cards** in the toolbar to control what appears on each card. -3. Collapsed groups will be displayed as vertical bars in the Kanban view. +| Setting | Description | +| --- | --- | +| Visible fields | Choose which fields appear on cards | +| Field order | Adjust the order of fields on cards | +| Cover | Choose an attachment field as the card cover | +| Hide field name | Show only field values to reduce card density | -#### Add New Group +Show only fields needed to understand the record status, such as title, owner, due date, priority, and key tags. -When the grouping field is a single-select field, you can add new groups. +## Move and Edit Cards -1. Click the "Add Group" button. +- Drag a card to change its order or move it to another stack. +- Click `+` at the bottom of a stack to open the create-record dialog. Set the stacking field value if you want the new record to appear in that stack. +- Right-click a card to insert a card above or below, expand the card, or delete it. +- Click a card, or choose **Expand card**, to open the record details. -2. Fill in the new group information and click outside the focus area or press Enter to complete the addition. - -#### Rename Group - -When the grouping field is a single-select field, you can rename groups. - -1. Click the dropdown icon next to the group title. - -2. Select "Rename Group" from the dropdown menu. - -#### Delete Group - -When the grouping field is a single-select field, you can delete groups. - -1. Click the dropdown icon next to the group title. - -2. Select "Delete Group" from the dropdown menu. - -#### Sort Groups - -When the grouping field is a single-select field, you can reorder groups. - -You can reorder groups by dragging them to the desired position. - -### Card-Related Operations - -#### Customize Card Configuration - -1. Click the "Card Configuration" menu in the toolbar. - -2. In the popup, toggle fields on or off to show or hide them on each card. - -3. You can use the "Find Fields" box to search for fields. - -4. You can click "Hide All" or "Show All" to show or hide all fields. - -5. Additionally, you can set the cover display and "Hide Field Names" option at the bottom of the popup dialog. - -#### Move Cards - -You can sort or switch groups by dragging and dropping cards. - -#### Add New Card - -1. Click the "+" button at the bottom of a group. - -2. After clicking, the new record's card details will expand, where you can enter data to save changes. - -#### Insert New Card - -1. Right-click a card to access the card menu. - -2. Select "Insert Card Above" or "Insert Card Below" option. - -#### Edit Card - -1. Click directly on the card or right-click to bring up the menu, then select "Expand Card" option. - -2. Now you can edit the current card's data in the expanded card view. - -#### Delete Card - -1. Right-click a card to access the card menu. - -2. Select "Delete Card" option. +## Notes +- When you drag a card to another stack, Teable updates the value of the stacking field. +- Create, edit, delete, and drag actions depend on your view, record, and field permissions; cards also cannot be dragged between stacks when the stacking field is computed or read-only. +- For team workflows, consider locking important views so grouping and card settings are not changed by accident. diff --git a/en/basic/view/toolbar.mdx b/en/basic/view/toolbar.mdx new file mode 100644 index 00000000..d8d495b7 --- /dev/null +++ b/en/basic/view/toolbar.mdx @@ -0,0 +1,233 @@ +--- +title: "View Toolbar" +description: "Use filters, groups, sorting, sharing, and view collaboration settings in the current view." +--- + +The view toolbar controls how the current view displays and shares records. Filters, groups, sorts, visible fields, row height, and related settings affect the current view only. They do not delete records or change other views. + +Filter, group, and sort settings are independent in each view. Changes in one view do not affect other views. + +## Toolbar Overview + +| Tool | Use it for | Common scenarios | +| --- | --- | --- | +| Filter | Show only records that match conditions | Open tasks, your own records, records in a date range | +| Group | Group records by field values | Workload by owner, progress by status, records by date | +| Sort | Reorder records by field values | Recently updated records, task priority, sales ranking | +| Share | Publish the current view as a link | Share a filtered, sorted, grouped, hidden-field, or layout-specific result | +| View Collaboration | Choose whether view settings sync to everyone or only apply to you | Temporary view changes, or a team view everyone uses | + +## Filter + +Filters show records that match specific conditions in the current view. They hide records that do not match. They do not delete records. + + + + Click `Filter` in the view toolbar. + + + Choose a field, an operator, and a comparison value. + + + For multiple conditions, choose **Meeting all conditions** or **Meeting any conditions**. + + + +| Relationship | Description | +| --- | --- | +| Meeting all conditions | A record appears only when every condition in that level is met | +| Meeting any conditions | A record appears when any condition in that level is met | + +View filter conditions + +### Condition Groups + +Use **condition groups** for more complex filter logic. For example, "A and B, or C and D" can be expressed as two groups. + +- Click `Add condition group` to create a group. +- Groups can use **Meeting all conditions** or **Meeting any conditions**. +- A group can contain nested groups. +- Condition groups support up to **3 levels**. + +View filter condition groups + +### Common Filter Operators + +| Field type | Common operators | Input | +| --- | --- | --- | +| Single Line Text, Long Text | Equals, Does not equal, Contains, Does not contain, Is empty, Is not empty | Text input | +| User | Equals, Does not equal, Contains any, Does not contain any, Is empty, Is not empty | User list, current user | +| Attachment | Is empty, Is not empty | No input | +| Multiple Select | Contains any, Contains all, Exactly matches, Does not contain any, Is empty, Is not empty | Option list | +| Single Select | Equals, Does not equal, Contains any, Does not contain any | Option list | +| Date, Created Time, Last Modified Time | Equals, Does not equal, Within, Before, After, On or before, On or after, Is empty, Is not empty | Preset range or exact date | +| Number, Rating, Auto Number | `=`, `≠`, `>`, `≥`, `<`, `≤`, Is empty, Is not empty | Number | +| Link | Equals, Does not equal, Contains, Does not contain, Contains any, Contains all, Exactly matches, Does not contain any, Is empty, Is not empty | Linked record selector | +| Created By, Last Modified By | Equals, Does not equal | User list, current user | + +Formula and Rollup operators depend on the result type. + +### Invalid Condition Warnings + +If a field type changes, a field is deleted, or an older filter setup is no longer compatible, Teable ignores the invalid condition so the view can still open. + +- The `Filter` button in the toolbar shows a warning icon. +- After you open the filter panel, the invalid condition shows a warning icon. +- Hover over the icon to see the reason and fix the condition. + +## Group + +Grouping records by field values helps you review distribution, summaries, and hierarchy. + + + + Click `Group` in the view toolbar. + + + Choose the field you want to group by. + + + Click `Add another group` when you need multiple grouping levels. + + + +| Field type | Recommended use | +| --- | --- | +| Single Select, Multiple Select | Group by fixed options such as status, priority, or type | +| User | Group by owner, collaborator, or submitter | +| Date | Group records by time period | +| Checkbox, Link, Number, Rating | Group by clear values or results | + +- Grouping supports up to **3 levels**. +- You can collapse or expand groups. Records inside each group still follow the current sort order. +- Each group shows a summary bar at the top so you can review its summary results. +- Empty values are placed into separate uncategorized, unassigned, or empty groups depending on the field type. + +## Sort + +Sorting reorders records by field values. It changes the display order in the current view and does not edit record content. + + + + Click `Sort` in the view toolbar. + + + Choose the field you want to sort by. + + + Choose ascending or descending. Add more sort conditions when you need multi-level sorting. + + + +Multi-level sorting follows the order of the conditions. Teable sorts by the first condition first; if records have the same value, it then applies the next condition. + +| Field type | Sort behavior | +| --- | --- | +| Text, Attachment | Sort alphabetically or in reverse order. Attachments are sorted by filename | +| Number, Duration, Rating | Sort by value in ascending or descending order | +| Date, Created Time, Last Modified Time | Sort from earliest to latest, or latest to earliest | +| Checkbox | Sort from unchecked to checked, or in the reverse order | +| Single Select, Multiple Select | Sort by the option order in the field configuration, or in the reverse order | + +Formula and Rollup fields are sorted according to their result type. + +Use the `Auto-sort records` toggle in the sort menu. + +| Status | Behavior | +| --- | --- | +| On | Records stay sorted by the current rules. When a field value changes, the record moves to its new position. You cannot manually drag records while auto-sort is on | +| Off | Records are sorted again only after you reapply sorting. You can manually drag records, and data updates do not move them automatically | + +## Share View + +**Share view** publishes the current view as a link. Visitors see the data and layout in that view. This is not the same as inviting them as base collaborators. + +To share an entire base, a specific table, or a folder, use base sharing in [Base](/en/basic/base). + +| Share option | Best for | +| --- | --- | +| Share table | Giving external people broader access to the current table | +| Share view | Publishing only the current view, such as a filtered, sorted, grouped, hidden-field, or layout-specific result | + +A view share link follows the current view configuration. If you later change filters, sorting, grouping, hidden fields, or layout, the shared page changes as well. + + + + Go to the view you want to share. + + + Click **Share** in the view toolbar. + + + Switch to **Share view**. + + + Turn on **Share view to web**. + + + Copy the generated link, or share the QR code. + + + +If you do not have permission to share the view, the sharing switch is unavailable. After **Share view to web** is turned off, existing share links can no longer be opened. + +Public links can be forwarded. Before enabling sharing, confirm that the current view does not include fields or records that should not be public. + +Different view types show different advanced options. + +| Option | Applies to | Description | +| --- | --- | --- | +| Allow viewers to copy data out of this view | Grid view | Controls whether visitors can copy data from the shared grid view | +| Show all fields in expanded records | Grid view | Controls whether visitors can see hidden fields when opening record details | +| Restrict by password | All view shares | Adds a password to the share link. Visitors must enter the correct password before opening it | +| Require login to submit | Form view | Requires visitors to log in before submitting the form | + +Share views can be embedded in other webpages. Click **Embed config** to preview the embed, copy iframe code, hide the toolbar, and choose a theme. + +```html + +``` + +| Embed option | Description | +| --- | --- | +| Hide toolbar | Adds `hideToolBar=true` to the link and hides filter, sort, search, and other toolbar controls. This does not apply to Form view | +| Theme | Supports system, light, and dark themes | + +## View Collaboration + +View collaboration controls whether view settings are shared with everyone or kept as your own personal adjustments. It affects filters, sorts, groups, visible fields, row height, and other view settings. It does not affect record data. + +| Mode | Use case | Setting behavior | +| --- | --- | --- | +| Collaboration mode | The team needs to use the same view setup | View settings are synced to everyone using this view | +| Personal mode | You want a temporary view setup, or you want to view data in your own way | Filters, sorts, groups, visible fields, and row height apply only to you | + +Click `Personal` in the toolbar to switch between collaboration mode and personal mode. + +If the view is not locked and you have permission to update the view, turning off personal mode gives you two choices. + +| Option | Result | +| --- | --- | +| `Exit and sync` | Sync your personal-mode view settings to everyone | +| `Confirm exit` | Discard your personal-mode view settings and leave personal mode | + +If the view is locked, or you do not have permission to edit the view, you can still use personal mode for your own temporary adjustments, but you cannot sync those changes to others. + +## Notes + +- Changing filters, groups, sorts, visible fields, or row height affects everyone using the current view, unless you are in personal mode. +- Share view publishes the current view result, not full base permissions. For ongoing collaboration, use member permissions or base sharing. +- In either mode, edits to cell values are still synced to everyone. diff --git a/en/basic/view/toolbar/collaboration-mode.mdx b/en/basic/view/toolbar/collaboration-mode.mdx deleted file mode 100644 index 9c6e2d20..00000000 --- a/en/basic/view/toolbar/collaboration-mode.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "View Collaboration" -description: "In collaboration mode, view settings are shared with everyone. In personal mode, they only apply to you." ---- - -- **Collaboration mode**: View settings are synced in real time to everyone using the same view. -- **Personal mode**: Your filters, sorts, groups, visible fields, and row height apply only to you. - -## 1. Switch Modes - -- Click `Personal` in the toolbar to switch between the two modes. -- If the view is not locked and you have permission to update the view, turning off personal mode gives you two choices: - - `Exit and sync`: Apply your personal-mode changes to everyone. - - `Confirm exit`: Discard the personal-mode changes and just leave personal mode. -- If the view is locked, or you do not have permission to edit the view, you can still use personal mode for your own temporary adjustments, but you cannot sync those changes to others. - -> If the current view is **locked**, Teable prompts you to use personal mode so you can still adjust the view for yourself without unlocking it. - -## 2. Notes - -- This mode affects only view settings, not the underlying records. -- In either mode, edits to cell values are still synced to everyone. diff --git a/en/basic/view/toolbar/filter.mdx b/en/basic/view/toolbar/filter.mdx deleted file mode 100644 index 247c5af5..00000000 --- a/en/basic/view/toolbar/filter.mdx +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: "Filter" -description: "Use filters to set conditions and quickly find the records that match what you need." ---- - -Sort, filter, and grouping settings are independent in each view. Changes in one view do not affect other views. - -## 1. Add Filters - -### 1. Add Filter Conditions - -- Click `Filter` in the toolbar to set filter conditions. -- When you add multiple conditions, choose how they relate: - - **AND**: all conditions must be met - - **OR**: any one condition can be met - -Logic operations - -### 2. Condition Groups - -For more complex logic such as “A and B, or C and D,” use **condition groups**. - -- Click `Add condition group` to create a group and connect conditions with **AND** or **OR**. -- Groups can contain more groups to build more complex logic. -- Condition groups support up to **3 levels** of nesting. - -Condition group example - -### 3. Invalid Condition Warnings - -If an existing filter becomes invalid because a field type changed, a field was deleted, or an older setup is no longer compatible, Teable automatically ignores that invalid condition so the view can still open normally. - -- The `Filter` button in the toolbar shows a warning icon when there are filter conditions that need attention. -- After you open the filter panel, the affected condition also shows a warning icon. Hover over it to see the explanation and fix the condition. - -## 2. Field Types and Operators - -Different field types support different filter logic. Here is a quick reference: - -| Field Type | Supported Operators | Input Data | -| ---- | ---- | ---- | -| Single Line Text | Equals, Does not equal, Contains, Does not contain, Is empty, Is not empty | Text input | -| Long Text | Equals, Does not equal, Contains, Does not contain, Is empty, Is not empty | Text input | -| User | Equals, Does not equal, Contains any, Does not contain any, Is empty, Is not empty | User selection list, and current user | -| Attachment | Is empty, Is not empty | - | -| Multiple Select | Contains any, Contains all, Exactly matches, Does not contain any, Is empty, Is not empty | Option selection list | -| Single Select | Equals, Does not equal, Contains any, Does not contain any | Option selection list | -| Date | Equals, Does not equal, Within, Before, After, On or before, On or after, Is empty, Is not empty | Preset range list, precise date picker | -| Number | =, ≠, >, ≥, \<, ≤, Is empty, Is not empty | Number | -| Rating | Equals, Does not equal, Greater than, Greater than or equal to, Less than, Less than or equal to, Is empty, Is not empty | Number | -| Link | Equals, Does not equal, Contains, Does not contain, Contains any, Contains all, Exactly matches, Does not contain any, Is empty, Is not empty | Linked value selector | -| Created Time | Equals, Does not equal, Within, Before, After, On or before, On or after, Is empty, Is not empty | Preset range list, precise date picker | -| Last Modified Time | Equals, Does not equal, Within, Before, After, On or before, On or after, Is empty, Is not empty | Preset range list, precise date picker | -| Created By | Equals, Does not equal | User selection list, and current user | -| Last Modified By | Equals, Does not equal | User selection list, and current user | -| Auto Number | =, ≠, >, ≥, \<, ≤ | Number | -| Button | - | - | - -Operators for Formula and Rollup fields depend on their result type, which may include any of the operators above. diff --git a/en/basic/view/toolbar/group.mdx b/en/basic/view/toolbar/group.mdx deleted file mode 100644 index 4e29d689..00000000 --- a/en/basic/view/toolbar/group.mdx +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Group" -description: "Group records by field values to quickly see distribution, summaries, and hierarchy." ---- - -Sort, filter, and grouping settings are independent in each view. Changes in one view do not affect other views. - -## 1. Entry Point - -- Click `Group` in the toolbar. -- In the grouping panel, click `Add another group` if you want to stack more grouping conditions. - -## 2. What You Get - -- Grouping supports up to **3 levels** of nesting. -- You can collapse or expand groups, while records inside each group still follow the current sort order. -- Each group shows a summary bar at the top so you can review distribution and summary results directly. - -## 3. Best-Suited Field Types - -- Single Select, Multiple Select, User, Date, Checkbox, Link, Number, and Rating fields all work well for grouping. -- Empty values are placed into separate uncategorized, unassigned, or empty groups depending on the field type. -- Text fields can also be grouped, but they usually create too many groups and are not ideal for large tables. diff --git a/en/basic/view/toolbar/share.mdx b/en/basic/view/toolbar/share.mdx deleted file mode 100644 index 312d722c..00000000 --- a/en/basic/view/toolbar/share.mdx +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: "Share" -description: "Publish the current view as a public link and configure copy, password, login, embed, and theme options." ---- - -{/* mintlify-resync: 2026-05-14 */} -**Share view** is used to publish the current view as a public link. Anyone with the link can access the data in this view, but cannot directly modify the original table records. - - -To share an entire base, a specific table, or a folder instead of only the current view, use base sharing in [Base](/en/basic/base). - - -## 1. Share View and Share Table - -In the table share entry, the current table usually shows both **Share table** and **Share view**: - -| Share option | Use case | -|------|------| -| **Share table** | Share the current table when visitors need broader access to table content. | -| **Share view** | Share only the current view when you want to publish a filtered, sorted, grouped, hidden-field, or layout-specific result. | - -A view share link only allows access to the current view. If you later change the view configuration, such as filters, sorting, grouping, hidden fields, or layout, the shared link reflects those changes. - -## 2. Enable Sharing - -1. Open the view you want to share -2. Click **Share** in the view toolbar -3. Switch to **Share view** -4. Turn on **Share view to web** -5. Copy the generated share link, or share the QR code - -If you do not have permission to share the view, the sharing switch is unavailable. - -After **Share view to web** is turned off, existing share links can no longer be accessed. - -## 3. Link Management - -After sharing is enabled, you can manage the link in the share panel: - -- **Copy link**: Copy the current share link. -- **QR code**: Generate a QR code for the current share link. -- **Generate new link**: Regenerate the share link. After generation, distribute the new link instead of continuing to use the old one. - - -Public links can be forwarded. Before enabling sharing, confirm that the current view does not include fields or records that should not be public. - - -## 4. Advanced Options - -Different view types show different advanced options. - -| Option | Applies to | Description | -|------|------|------| -| **Allow viewers to copy data out of this view** | Grid view | Controls whether visitors can copy data from the shared grid view. | -| **Show all fields in expanded records** | Grid view | Controls whether visitors can see fields hidden from the current view when opening record details. | -| **Restrict by password** | All view shares | Adds password protection to the share link. Visitors must enter the correct password before opening the share page. | -| **Require login to submit** | Form view | Requires visitors to log in before submitting the form. | - -## 5. Embed in Another Page - -Share views can be embedded in other webpages. Click **Embed config** to: - -- Preview the embed -- Copy iframe code -- Configure whether to hide the toolbar -- Configure the theme - -Example: - -```html - -``` - -### Hide Toolbar - -**Hide toolbar** adds `hideToolBar=true` to the link and hides the filter, sort, search, and other toolbar controls on the share page. This option does not apply to Form view. - -### Theme - -Theme is controlled through link parameters: - -- **System** -- **Light** -- **Dark** diff --git a/en/basic/view/toolbar/sort.mdx b/en/basic/view/toolbar/sort.mdx deleted file mode 100644 index 512973a5..00000000 --- a/en/basic/view/toolbar/sort.mdx +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: "Sort" -description: "In specific views, you can sort records based on values in particular fields to display them in a specific order. Sorting records in one view does not affect the order of records in other views—sorting only applies to the view you are currently viewing." ---- - -### Configure New Sort - -To configure a new sort, follow these steps: - -1. Click the "Sort" option in the view toolbar. -2. Then, select a field to sort from the field list. -3. To easily find the field you want to sort by, you can also type in the search bar. -4. Depending on the type of field you're sorting, there will be an additional option to choose the sort order. For example, in text-based fields, you can choose to sort alphabetically or reverse alphabetically, and in date fields, you can sort from earliest to latest or latest to earliest. We'll cover this in more detail in the "Field Types and Sorting" section below. -5. After selecting your first sort field, you can add more fields to sort by. Simply click the "Add another sort" option. - -Once configured, you can: - -* Remove any sorts you've applied by clicking the X button next to the specific field you've chosen. - -* Reorder using the drag handles. We'll discuss reordering more in the next section, but remember that the sort order is hierarchical and will depend on the order of the fields chosen. - -#### Reordering Sort Order: - -1. Click the "Sort" option in the view toolbar. -2. Locate the 6-dot icon next to the field you want to move. -3. A hand icon should appear when you hover over the icon. -4. Click, drag, and drop the field to where you want it in the sort order. - -Different field types can be sorted in different ways. Note that in almost all cases, empty values are placed first when sorting in ascending order. - -* Text field types, such as single-line text fields, long text fields, or formula fields that return text, can be sorted alphabetically (A → Z) or reverse alphabetically (Z → A). Teable uses natural sort order for text, so multi-digit numbers in text fields are sorted as single characters. For example, this means "z2" would sort before "z11" because 2 is considered less than 11. Attachment fields can also be sorted alphabetically or reverse alphabetically by filename. -* Number field types, such as numbers and duration, can be sorted in ascending numerical order (1 → 9) or descending numerical order (9 → 1). Rating fields can also be sorted in ascending or descending numerical order. -* Date and time fields can be sorted using ascending (1 → 9), from earliest date to latest date, or descending (9 → 1), from latest date to earliest date. -* Checkbox fields can be sorted by whether or not the box is checked, so either (▢ → ✓) or the reverse (✓ → ▢). -* Single select and multiple select fields sort based on the order of options in the field customization menu, either (First → Last) or (Last → First). If you're sorting on a single select or multiple select field, you can change the order in which records are sorted by going into that field's customization menu (and sorting the options alphabetically if you wish). - -### Automatic and Manual View Sorting - -By default, when you create a new view, it will have the "Auto-sort records" toggle enabled. - -If this toggle is on, records will automatically sort if changes to records would result in them being sorted differently. You will not be able to manually reorder records using the record drag handles. In grid view, if the "Auto-sort records" toggle is on, all fields that have sorts applied (as well as the sort menu button) will have a light orange background to clearly indicate that field is being auto-sorted. - -If this toggle is off, records will only sort themselves when sorts are reapplied, and you can use the record drag handles to manually reorder records as you prefer. Turning off the "Auto-sort records" toggle will cause a sort button to appear in the sort menu. After manually reordering records in your view, you can always reapply sorts by manually clicking this sort option. - -### Sorting Behavior from View Share Links - -If you create a view share link to provide non-collaborator access to a view, the sorting criteria applied to the view will be preserved in the shared view. However, viewers will have the option to change any sort criteria (along with other view configuration options) - this only affects how they view records through the view share link and does not adjust any view configuration options in your table. - diff --git a/images/2025-02-14-14-43-57.png b/images/2025-02-14-14-43-57.png deleted file mode 100644 index 091cf259..00000000 Binary files a/images/2025-02-14-14-43-57.png and /dev/null differ diff --git a/images/2025-02-14-14-44-28.png b/images/2025-02-14-14-44-28.png deleted file mode 100644 index 019fdf91..00000000 Binary files a/images/2025-02-14-14-44-28.png and /dev/null differ diff --git a/images/2025-02-14-14-51-22.png b/images/2025-02-14-14-51-22.png deleted file mode 100644 index ac76a63b..00000000 Binary files a/images/2025-02-14-14-51-22.png and /dev/null differ diff --git a/images/2025-02-14-14-52-57.png b/images/2025-02-14-14-52-57.png deleted file mode 100644 index 0776ba93..00000000 Binary files a/images/2025-02-14-14-52-57.png and /dev/null differ diff --git a/images/2025-02-14-15-15-36.png b/images/2025-02-14-15-15-36.png deleted file mode 100644 index 5fecff9e..00000000 Binary files a/images/2025-02-14-15-15-36.png and /dev/null differ diff --git a/images/2025-11-25-21-46-31.png b/images/2025-11-25-21-46-31.png deleted file mode 100644 index 8ae9bcb3..00000000 Binary files a/images/2025-11-25-21-46-31.png and /dev/null differ diff --git a/images/2025-11-25-23-17-27.png b/images/2025-11-25-23-17-27.png deleted file mode 100644 index 7aaef389..00000000 Binary files a/images/2025-11-25-23-17-27.png and /dev/null differ diff --git a/images/2025-11-25-23-20-43.png b/images/2025-11-25-23-20-43.png deleted file mode 100644 index 958881a6..00000000 Binary files a/images/2025-11-25-23-20-43.png and /dev/null differ diff --git a/images/2025-12-01-23-33-11.png b/images/2025-12-01-23-33-11.png deleted file mode 100644 index cfe001c0..00000000 Binary files a/images/2025-12-01-23-33-11.png and /dev/null differ diff --git a/images/2025-12-01-23-34-44.png b/images/2025-12-01-23-34-44.png deleted file mode 100644 index e1fde81f..00000000 Binary files a/images/2025-12-01-23-34-44.png and /dev/null differ diff --git a/images/2026-02-28-18-14-08.png b/images/2026-02-28-18-14-08.png deleted file mode 100644 index 1460d557..00000000 Binary files a/images/2026-02-28-18-14-08.png and /dev/null differ diff --git a/images/2026-02-28-18-23-27.png b/images/2026-02-28-18-23-27.png deleted file mode 100644 index 7d1b9856..00000000 Binary files a/images/2026-02-28-18-23-27.png and /dev/null differ diff --git a/images/2026-05-09-billing-overview-en.png b/images/2026-05-09-billing-overview-en.png deleted file mode 100644 index decba7b8..00000000 Binary files a/images/2026-05-09-billing-overview-en.png and /dev/null differ diff --git a/images/2026-05-09-billing-overview-zh.png b/images/2026-05-09-billing-overview-zh.png deleted file mode 100644 index 0b0b19c7..00000000 Binary files a/images/2026-05-09-billing-overview-zh.png and /dev/null differ diff --git a/images/docs/ai/2026-05-21-app-builder-code-editor-en.png b/images/docs/ai/2026-05-21-app-builder-code-editor-en.png new file mode 100644 index 00000000..951c3b08 Binary files /dev/null and b/images/docs/ai/2026-05-21-app-builder-code-editor-en.png differ diff --git a/images/docs/ai/2026-05-21-app-builder-code-editor-zh.png b/images/docs/ai/2026-05-21-app-builder-code-editor-zh.png new file mode 100644 index 00000000..d29d7d70 Binary files /dev/null and b/images/docs/ai/2026-05-21-app-builder-code-editor-zh.png differ diff --git a/images/docs/ai/2026-05-21-app-builder-custom-domain.png b/images/docs/ai/2026-05-21-app-builder-custom-domain.png new file mode 100644 index 00000000..5fa8ea84 Binary files /dev/null and b/images/docs/ai/2026-05-21-app-builder-custom-domain.png differ diff --git a/images/docs/ai/2026-05-21-app-builder-editor-interface.png b/images/docs/ai/2026-05-21-app-builder-editor-interface.png new file mode 100644 index 00000000..7d0b9607 Binary files /dev/null and b/images/docs/ai/2026-05-21-app-builder-editor-interface.png differ diff --git a/images/docs/ai/2026-05-21-app-builder-login-settings.png b/images/docs/ai/2026-05-21-app-builder-login-settings.png new file mode 100644 index 00000000..a8041312 Binary files /dev/null and b/images/docs/ai/2026-05-21-app-builder-login-settings.png differ diff --git a/images/docs/ai/2026-05-21-app-builder-publish-app.png b/images/docs/ai/2026-05-21-app-builder-publish-app.png new file mode 100644 index 00000000..8ca4f608 Binary files /dev/null and b/images/docs/ai/2026-05-21-app-builder-publish-app.png differ diff --git a/images/docs/ai/2026-05-21-app-builder-version-history.png b/images/docs/ai/2026-05-21-app-builder-version-history.png new file mode 100644 index 00000000..be6832c9 Binary files /dev/null and b/images/docs/ai/2026-05-21-app-builder-version-history.png differ diff --git a/images/docs/ai/2026-05-21-custom-model-add-provider.png b/images/docs/ai/2026-05-21-custom-model-add-provider.png new file mode 100644 index 00000000..45078850 Binary files /dev/null and b/images/docs/ai/2026-05-21-custom-model-add-provider.png differ diff --git a/images/docs/ai/2026-05-21-custom-model-ai-settings.png b/images/docs/ai/2026-05-21-custom-model-ai-settings.png new file mode 100644 index 00000000..fffae65e Binary files /dev/null and b/images/docs/ai/2026-05-21-custom-model-ai-settings.png differ diff --git a/images/docs/ai/cuppy-icon.svg b/images/docs/ai/cuppy-icon.svg new file mode 100644 index 00000000..27d3c0ba --- /dev/null +++ b/images/docs/ai/cuppy-icon.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/images/docs/base/2026-05-22-ai-field-create-config.png b/images/docs/base/2026-05-22-ai-field-create-config.png new file mode 100644 index 00000000..6644bbc0 Binary files /dev/null and b/images/docs/base/2026-05-22-ai-field-create-config.png differ diff --git a/images/docs/base/2026-05-22-ai-field-edit-config.png b/images/docs/base/2026-05-22-ai-field-edit-config.png new file mode 100644 index 00000000..c7a19f0b Binary files /dev/null and b/images/docs/base/2026-05-22-ai-field-edit-config.png differ diff --git a/images/docs/base/2026-05-22-ai-field-generate-menu.png b/images/docs/base/2026-05-22-ai-field-generate-menu.png new file mode 100644 index 00000000..010b7a8f Binary files /dev/null and b/images/docs/base/2026-05-22-ai-field-generate-menu.png differ diff --git a/images/docs/base/2026-05-22-ai-field-generation-status.png b/images/docs/base/2026-05-22-ai-field-generation-status.png new file mode 100644 index 00000000..5fa98488 Binary files /dev/null and b/images/docs/base/2026-05-22-ai-field-generation-status.png differ diff --git a/images/docs/base/2026-05-22-ai-field-save-options.png b/images/docs/base/2026-05-22-ai-field-save-options.png new file mode 100644 index 00000000..98054212 Binary files /dev/null and b/images/docs/base/2026-05-22-ai-field-save-options.png differ diff --git a/images/docs/base/2026-05-22-base-create.png b/images/docs/base/2026-05-22-base-create.png new file mode 100644 index 00000000..1e985687 Binary files /dev/null and b/images/docs/base/2026-05-22-base-create.png differ diff --git a/images/docs/base/2026-05-22-base-duplicate.png b/images/docs/base/2026-05-22-base-duplicate.png new file mode 100644 index 00000000..ec208c5d Binary files /dev/null and b/images/docs/base/2026-05-22-base-duplicate.png differ diff --git a/images/docs/base/2026-05-22-base-export.png b/images/docs/base/2026-05-22-base-export.png new file mode 100644 index 00000000..e02d52a3 Binary files /dev/null and b/images/docs/base/2026-05-22-base-export.png differ diff --git a/images/docs/base/2026-05-22-base-import.png b/images/docs/base/2026-05-22-base-import.png new file mode 100644 index 00000000..2b288c27 Binary files /dev/null and b/images/docs/base/2026-05-22-base-import.png differ diff --git a/images/docs/base/2026-05-22-base-rename-delete.png b/images/docs/base/2026-05-22-base-rename-delete.png new file mode 100644 index 00000000..91f5fe65 Binary files /dev/null and b/images/docs/base/2026-05-22-base-rename-delete.png differ diff --git a/images/docs/base/2026-05-22-base-share-entry.png b/images/docs/base/2026-05-22-base-share-entry.png new file mode 100644 index 00000000..ae5a8f40 Binary files /dev/null and b/images/docs/base/2026-05-22-base-share-entry.png differ diff --git a/images/docs/base/2026-05-22-base-share-settings.png b/images/docs/base/2026-05-22-base-share-settings.png new file mode 100644 index 00000000..b003dcdf Binary files /dev/null and b/images/docs/base/2026-05-22-base-share-settings.png differ diff --git a/images/docs/base/2026-05-22-field-add.png b/images/docs/base/2026-05-22-field-add.png new file mode 100644 index 00000000..8b2b0ab6 Binary files /dev/null and b/images/docs/base/2026-05-22-field-add.png differ diff --git a/images/docs/base/2026-05-22-field-hide-tool.png b/images/docs/base/2026-05-22-field-hide-tool.png new file mode 100644 index 00000000..724ae265 Binary files /dev/null and b/images/docs/base/2026-05-22-field-hide-tool.png differ diff --git a/images/docs/base/2026-05-22-field-menu-actions.png b/images/docs/base/2026-05-22-field-menu-actions.png new file mode 100644 index 00000000..20a5ac0f Binary files /dev/null and b/images/docs/base/2026-05-22-field-menu-actions.png differ diff --git a/images/docs/base/2026-05-22-table-attachment-download-menu.png b/images/docs/base/2026-05-22-table-attachment-download-menu.png new file mode 100644 index 00000000..ba63a485 Binary files /dev/null and b/images/docs/base/2026-05-22-table-attachment-download-menu.png differ diff --git a/images/docs/base/2026-05-22-table-attachment-download-options.png b/images/docs/base/2026-05-22-table-attachment-download-options.png new file mode 100644 index 00000000..ced6819a Binary files /dev/null and b/images/docs/base/2026-05-22-table-attachment-download-options.png differ diff --git a/images/docs/base/2026-05-22-table-create-menu.png b/images/docs/base/2026-05-22-table-create-menu.png new file mode 100644 index 00000000..281d6708 Binary files /dev/null and b/images/docs/base/2026-05-22-table-create-menu.png differ diff --git a/images/docs/base/2026-05-22-table-design.png b/images/docs/base/2026-05-22-table-design.png new file mode 100644 index 00000000..0b40c1b7 Binary files /dev/null and b/images/docs/base/2026-05-22-table-design.png differ diff --git a/images/docs/base/2026-05-22-table-export-table.png b/images/docs/base/2026-05-22-table-export-table.png new file mode 100644 index 00000000..e708e3ee Binary files /dev/null and b/images/docs/base/2026-05-22-table-export-table.png differ diff --git a/images/docs/base/2026-05-22-table-export-view.png b/images/docs/base/2026-05-22-table-export-view.png new file mode 100644 index 00000000..4ef6fc30 Binary files /dev/null and b/images/docs/base/2026-05-22-table-export-view.png differ diff --git a/images/docs/base/2026-05-22-table-global-search.png b/images/docs/base/2026-05-22-table-global-search.png new file mode 100644 index 00000000..4a8d27be Binary files /dev/null and b/images/docs/base/2026-05-22-table-global-search.png differ diff --git a/images/docs/base/2026-05-22-table-import-data-menu.png b/images/docs/base/2026-05-22-table-import-data-menu.png new file mode 100644 index 00000000..8efdac6a Binary files /dev/null and b/images/docs/base/2026-05-22-table-import-data-menu.png differ diff --git a/images/docs/base/2026-05-22-table-import-preview.png b/images/docs/base/2026-05-22-table-import-preview.png new file mode 100644 index 00000000..61a3e097 Binary files /dev/null and b/images/docs/base/2026-05-22-table-import-preview.png differ diff --git a/images/docs/base/2026-05-22-table-rename-delete.png b/images/docs/base/2026-05-22-table-rename-delete.png new file mode 100644 index 00000000..4ae7f1d8 Binary files /dev/null and b/images/docs/base/2026-05-22-table-rename-delete.png differ diff --git a/images/docs/base/2026-05-22-table-share-entry.png b/images/docs/base/2026-05-22-table-share-entry.png new file mode 100644 index 00000000..9f9aabb3 Binary files /dev/null and b/images/docs/base/2026-05-22-table-share-entry.png differ diff --git a/images/docs/base/2026-05-22-table-share-permissions.png b/images/docs/base/2026-05-22-table-share-permissions.png new file mode 100644 index 00000000..242c03d9 Binary files /dev/null and b/images/docs/base/2026-05-22-table-share-permissions.png differ diff --git a/images/docs/base/2026-05-22-table-share-web.png b/images/docs/base/2026-05-22-table-share-web.png new file mode 100644 index 00000000..bbe6c88e Binary files /dev/null and b/images/docs/base/2026-05-22-table-share-web.png differ diff --git a/images/docs/base/2026-05-22-table-trash.png b/images/docs/base/2026-05-22-table-trash.png new file mode 100644 index 00000000..9ea92d69 Binary files /dev/null and b/images/docs/base/2026-05-22-table-trash.png differ diff --git a/images/docs/base/2026-05-26-field-conditional-lookup-period-growth-zh.png b/images/docs/base/2026-05-26-field-conditional-lookup-period-growth-zh.png new file mode 100644 index 00000000..180956db Binary files /dev/null and b/images/docs/base/2026-05-26-field-conditional-lookup-period-growth-zh.png differ diff --git a/images/docs/base/2026-05-26-field-conditional-lookup-product-analysis-zh.png b/images/docs/base/2026-05-26-field-conditional-lookup-product-analysis-zh.png new file mode 100644 index 00000000..553ff4cf Binary files /dev/null and b/images/docs/base/2026-05-26-field-conditional-lookup-product-analysis-zh.png differ diff --git a/images/docs/base/2026-05-26-field-conditional-rollup-duplicate-count-zh.png b/images/docs/base/2026-05-26-field-conditional-rollup-duplicate-count-zh.png new file mode 100644 index 00000000..b1dcebfb Binary files /dev/null and b/images/docs/base/2026-05-26-field-conditional-rollup-duplicate-count-zh.png differ diff --git a/images/docs/base/2026-05-26-field-conditional-rollup-task-count-zh.png b/images/docs/base/2026-05-26-field-conditional-rollup-task-count-zh.png new file mode 100644 index 00000000..21da4188 Binary files /dev/null and b/images/docs/base/2026-05-26-field-conditional-rollup-task-count-zh.png differ diff --git a/images/docs/base/2026-05-26-field-long-text-display-mode-zh.png b/images/docs/base/2026-05-26-field-long-text-display-mode-zh.png new file mode 100644 index 00000000..ae520502 Binary files /dev/null and b/images/docs/base/2026-05-26-field-long-text-display-mode-zh.png differ diff --git a/images/docs/base/2026-05-26-field-number-display-mode-zh.png b/images/docs/base/2026-05-26-field-number-display-mode-zh.png new file mode 100644 index 00000000..1b18eadd Binary files /dev/null and b/images/docs/base/2026-05-26-field-number-display-mode-zh.png differ diff --git a/images/docs/base/2026-05-26-field-number-format-zh.png b/images/docs/base/2026-05-26-field-number-format-zh.png new file mode 100644 index 00000000..014ad2f8 Binary files /dev/null and b/images/docs/base/2026-05-26-field-number-format-zh.png differ diff --git a/images/docs/base/2026-05-26-field-number-precision-zh.png b/images/docs/base/2026-05-26-field-number-precision-zh.png new file mode 100644 index 00000000..b78e12ed Binary files /dev/null and b/images/docs/base/2026-05-26-field-number-precision-zh.png differ diff --git a/images/docs/base/2026-05-26-grid-freeze-divider.png b/images/docs/base/2026-05-26-grid-freeze-divider.png new file mode 100644 index 00000000..714a6af1 Binary files /dev/null and b/images/docs/base/2026-05-26-grid-freeze-divider.png differ diff --git a/images/docs/base/2026-05-26-grid-freeze-field-menu.png b/images/docs/base/2026-05-26-grid-freeze-field-menu.png new file mode 100644 index 00000000..f02ed213 Binary files /dev/null and b/images/docs/base/2026-05-26-grid-freeze-field-menu.png differ diff --git a/images/docs/base/2026-05-26-grid-row-height-menu.png b/images/docs/base/2026-05-26-grid-row-height-menu.png new file mode 100644 index 00000000..73cb7835 Binary files /dev/null and b/images/docs/base/2026-05-26-grid-row-height-menu.png differ diff --git a/images/docs/base/2026-05-26-grid-selection-statistics.png b/images/docs/base/2026-05-26-grid-selection-statistics.png new file mode 100644 index 00000000..69d2bc67 Binary files /dev/null and b/images/docs/base/2026-05-26-grid-selection-statistics.png differ diff --git a/images/docs/base/2026-05-26-record-bulk-delete-menu.png b/images/docs/base/2026-05-26-record-bulk-delete-menu.png new file mode 100644 index 00000000..e6d7d4df Binary files /dev/null and b/images/docs/base/2026-05-26-record-bulk-delete-menu.png differ diff --git a/images/docs/base/2026-05-26-record-comment-editor.png b/images/docs/base/2026-05-26-record-comment-editor.png new file mode 100644 index 00000000..5925f214 Binary files /dev/null and b/images/docs/base/2026-05-26-record-comment-editor.png differ diff --git a/images/docs/base/2026-05-26-record-create-context-menu.png b/images/docs/base/2026-05-26-record-create-context-menu.png new file mode 100644 index 00000000..5835e31a Binary files /dev/null and b/images/docs/base/2026-05-26-record-create-context-menu.png differ diff --git a/images/docs/base/2026-05-26-record-detail-card-actions.png b/images/docs/base/2026-05-26-record-detail-card-actions.png new file mode 100644 index 00000000..59380009 Binary files /dev/null and b/images/docs/base/2026-05-26-record-detail-card-actions.png differ diff --git a/images/docs/base/2026-05-26-record-detail-expand-entry.png b/images/docs/base/2026-05-26-record-detail-expand-entry.png new file mode 100644 index 00000000..96b33f61 Binary files /dev/null and b/images/docs/base/2026-05-26-record-detail-expand-entry.png differ diff --git a/images/docs/base/2026-05-26-record-row-context-history-comment.png b/images/docs/base/2026-05-26-record-row-context-history-comment.png new file mode 100644 index 00000000..5a0afec2 Binary files /dev/null and b/images/docs/base/2026-05-26-record-row-context-history-comment.png differ diff --git a/images/docs/base/2026-05-26-record-table-history-dialog.png b/images/docs/base/2026-05-26-record-table-history-dialog.png new file mode 100644 index 00000000..e24acd44 Binary files /dev/null and b/images/docs/base/2026-05-26-record-table-history-dialog.png differ diff --git a/images/docs/base/2026-05-26-record-table-history-menu.png b/images/docs/base/2026-05-26-record-table-history-menu.png new file mode 100644 index 00000000..19af36b2 Binary files /dev/null and b/images/docs/base/2026-05-26-record-table-history-menu.png differ diff --git a/images/docs/base/2026-05-26-view-filter-condition-groups-zh.png b/images/docs/base/2026-05-26-view-filter-condition-groups-zh.png new file mode 100644 index 00000000..cfa44dd5 Binary files /dev/null and b/images/docs/base/2026-05-26-view-filter-condition-groups-zh.png differ diff --git a/images/docs/base/2026-05-26-view-filter-condition-groups.png b/images/docs/base/2026-05-26-view-filter-condition-groups.png new file mode 100644 index 00000000..1b7c7402 Binary files /dev/null and b/images/docs/base/2026-05-26-view-filter-condition-groups.png differ diff --git a/images/docs/base/2026-05-26-view-filter-conditions-zh.png b/images/docs/base/2026-05-26-view-filter-conditions-zh.png new file mode 100644 index 00000000..d7cd743e Binary files /dev/null and b/images/docs/base/2026-05-26-view-filter-conditions-zh.png differ diff --git a/images/docs/base/2026-05-26-view-filter-conditions.png b/images/docs/base/2026-05-26-view-filter-conditions.png new file mode 100644 index 00000000..263b75c3 Binary files /dev/null and b/images/docs/base/2026-05-26-view-filter-conditions.png differ diff --git a/images/docs/space/2026-05-21-base-invite-collaborators.png b/images/docs/space/2026-05-21-base-invite-collaborators.png new file mode 100644 index 00000000..2c6000bc Binary files /dev/null and b/images/docs/space/2026-05-21-base-invite-collaborators.png differ diff --git a/images/docs/space/2026-05-21-base-invite-methods.png b/images/docs/space/2026-05-21-base-invite-methods.png new file mode 100644 index 00000000..bf59be29 Binary files /dev/null and b/images/docs/space/2026-05-21-base-invite-methods.png differ diff --git a/images/docs/space/2026-05-21-space-invite-delete-link.png b/images/docs/space/2026-05-21-space-invite-delete-link.png new file mode 100644 index 00000000..cd8fe8d3 Binary files /dev/null and b/images/docs/space/2026-05-21-space-invite-delete-link.png differ diff --git a/images/docs/space/2026-05-21-space-invite-email.png b/images/docs/space/2026-05-21-space-invite-email.png new file mode 100644 index 00000000..7e124fe0 Binary files /dev/null and b/images/docs/space/2026-05-21-space-invite-email.png differ diff --git a/images/docs/space/2026-05-21-space-invite-entry.png b/images/docs/space/2026-05-21-space-invite-entry.png new file mode 100644 index 00000000..5109eba5 Binary files /dev/null and b/images/docs/space/2026-05-21-space-invite-entry.png differ diff --git a/images/docs/space/2026-05-21-space-invite-link.png b/images/docs/space/2026-05-21-space-invite-link.png new file mode 100644 index 00000000..fcab8425 Binary files /dev/null and b/images/docs/space/2026-05-21-space-invite-link.png differ diff --git a/images/docs/space/2026-05-21-space-invite-remove-collaborator.png b/images/docs/space/2026-05-21-space-invite-remove-collaborator.png new file mode 100644 index 00000000..74bbc740 Binary files /dev/null and b/images/docs/space/2026-05-21-space-invite-remove-collaborator.png differ diff --git a/images/docs/space/2026-05-22-billing-overview-en.png b/images/docs/space/2026-05-22-billing-overview-en.png new file mode 100644 index 00000000..81cba2a9 Binary files /dev/null and b/images/docs/space/2026-05-22-billing-overview-en.png differ diff --git a/images/docs/space/2026-05-22-billing-overview-zh.png b/images/docs/space/2026-05-22-billing-overview-zh.png new file mode 100644 index 00000000..0234e053 Binary files /dev/null and b/images/docs/space/2026-05-22-billing-overview-zh.png differ diff --git a/images/docs/space/2026-05-26-space-create-en.png b/images/docs/space/2026-05-26-space-create-en.png new file mode 100644 index 00000000..d77fde59 Binary files /dev/null and b/images/docs/space/2026-05-26-space-create-en.png differ diff --git a/images/docs/space/2026-05-26-space-create-zh.png b/images/docs/space/2026-05-26-space-create-zh.png new file mode 100644 index 00000000..7c562a75 Binary files /dev/null and b/images/docs/space/2026-05-26-space-create-zh.png differ diff --git a/images/docs/space/2026-05-26-space-rename-en.png b/images/docs/space/2026-05-26-space-rename-en.png new file mode 100644 index 00000000..d2126915 Binary files /dev/null and b/images/docs/space/2026-05-26-space-rename-en.png differ diff --git a/images/docs/space/2026-05-26-space-rename-zh.png b/images/docs/space/2026-05-26-space-rename-zh.png new file mode 100644 index 00000000..1094a2ea Binary files /dev/null and b/images/docs/space/2026-05-26-space-rename-zh.png differ diff --git a/images/docs/space/2026-05-26-space-trash-menu-en.png b/images/docs/space/2026-05-26-space-trash-menu-en.png new file mode 100644 index 00000000..95cfbd7f Binary files /dev/null and b/images/docs/space/2026-05-26-space-trash-menu-en.png differ diff --git a/images/docs/space/2026-05-26-space-trash-menu-zh.png b/images/docs/space/2026-05-26-space-trash-menu-zh.png new file mode 100644 index 00000000..7a6aef04 Binary files /dev/null and b/images/docs/space/2026-05-26-space-trash-menu-zh.png differ diff --git a/images/ji-ben-gong-neng/153d7315e2dd2110.png b/images/ji-ben-gong-neng/153d7315e2dd2110.png deleted file mode 100644 index 007709fc..00000000 Binary files a/images/ji-ben-gong-neng/153d7315e2dd2110.png and /dev/null differ diff --git a/images/ji-ben-gong-neng/30558ca439f98335.png b/images/ji-ben-gong-neng/30558ca439f98335.png deleted file mode 100644 index 0399e3ad..00000000 Binary files a/images/ji-ben-gong-neng/30558ca439f98335.png and /dev/null differ diff --git a/images/ji-ben-gong-neng/734748fc4f0382cb.png b/images/ji-ben-gong-neng/734748fc4f0382cb.png deleted file mode 100644 index 78efca50..00000000 Binary files a/images/ji-ben-gong-neng/734748fc4f0382cb.png and /dev/null differ diff --git a/images/ji-ben-gong-neng/800e5de85dc0652b.png b/images/ji-ben-gong-neng/800e5de85dc0652b.png deleted file mode 100644 index 7c447f39..00000000 Binary files a/images/ji-ben-gong-neng/800e5de85dc0652b.png and /dev/null differ diff --git a/images/ji-ben-gong-neng/cbdaf3771db020a9.png b/images/ji-ben-gong-neng/cbdaf3771db020a9.png deleted file mode 100644 index 13c9633d..00000000 Binary files a/images/ji-ben-gong-neng/cbdaf3771db020a9.png and /dev/null differ diff --git a/images/ji-ben-gong-neng/fe89775652df41b6.png b/images/ji-ben-gong-neng/fe89775652df41b6.png deleted file mode 100644 index cd5125c2..00000000 Binary files a/images/ji-ben-gong-neng/fe89775652df41b6.png and /dev/null differ diff --git a/images/ji-ben-gong-neng/shu-ju-biao/07d7e382b0ecbaf3.png b/images/ji-ben-gong-neng/shu-ju-biao/07d7e382b0ecbaf3.png deleted file mode 100644 index 58f0662d..00000000 Binary files a/images/ji-ben-gong-neng/shu-ju-biao/07d7e382b0ecbaf3.png and /dev/null differ diff --git a/images/ji-ben-gong-neng/shu-ju-biao/227900d6ec43a16e.png b/images/ji-ben-gong-neng/shu-ju-biao/227900d6ec43a16e.png deleted file mode 100644 index e2def792..00000000 Binary files a/images/ji-ben-gong-neng/shu-ju-biao/227900d6ec43a16e.png and /dev/null differ diff --git a/images/ji-ben-gong-neng/shu-ju-biao/39fb770b88257a59.png b/images/ji-ben-gong-neng/shu-ju-biao/39fb770b88257a59.png deleted file mode 100644 index b89274cd..00000000 Binary files a/images/ji-ben-gong-neng/shu-ju-biao/39fb770b88257a59.png and /dev/null differ diff --git a/images/ji-ben-gong-neng/shu-ju-biao/6ecf5efee4ca8c93.png b/images/ji-ben-gong-neng/shu-ju-biao/6ecf5efee4ca8c93.png deleted file mode 100644 index 0cd2d90b..00000000 Binary files a/images/ji-ben-gong-neng/shu-ju-biao/6ecf5efee4ca8c93.png and /dev/null differ diff --git a/images/ji-ben-gong-neng/shu-ju-biao/8c22b9e21ce63584.png b/images/ji-ben-gong-neng/shu-ju-biao/8c22b9e21ce63584.png deleted file mode 100644 index e751f1cf..00000000 Binary files a/images/ji-ben-gong-neng/shu-ju-biao/8c22b9e21ce63584.png and /dev/null differ diff --git "a/images/orphans/\n[\345\233\276\347\211\207].png" "b/images/orphans/\n[\345\233\276\347\211\207].png" deleted file mode 100644 index 148d070a..00000000 Binary files "a/images/orphans/\n[\345\233\276\347\211\207].png" and /dev/null differ diff --git a/images/orphans/2025-02-12-18-40-29.png b/images/orphans/2025-02-12-18-40-29.png deleted file mode 100644 index 73cc0bed..00000000 Binary files a/images/orphans/2025-02-12-18-40-29.png and /dev/null differ diff --git a/images/orphans/2025-02-14-12-24-15.png b/images/orphans/2025-02-14-12-24-15.png deleted file mode 100644 index e9d666eb..00000000 Binary files a/images/orphans/2025-02-14-12-24-15.png and /dev/null differ diff --git a/images/orphans/2025-02-14-14-30-31.png b/images/orphans/2025-02-14-14-30-31.png deleted file mode 100644 index 59d86cd8..00000000 Binary files a/images/orphans/2025-02-14-14-30-31.png and /dev/null differ diff --git a/images/orphans/2025-02-14-14-48-33.png b/images/orphans/2025-02-14-14-48-33.png deleted file mode 100644 index 61e490b8..00000000 Binary files a/images/orphans/2025-02-14-14-48-33.png and /dev/null differ diff --git a/images/orphans/2025-02-14-14-49-08.png b/images/orphans/2025-02-14-14-49-08.png deleted file mode 100644 index 7067f035..00000000 Binary files a/images/orphans/2025-02-14-14-49-08.png and /dev/null differ diff --git a/images/orphans/2025-02-14-15-20-33.png b/images/orphans/2025-02-14-15-20-33.png deleted file mode 100644 index 6f2e4e60..00000000 Binary files a/images/orphans/2025-02-14-15-20-33.png and /dev/null differ diff --git a/images/orphans/2025-02-14-16-19-22.png b/images/orphans/2025-02-14-16-19-22.png deleted file mode 100644 index f642b79a..00000000 Binary files a/images/orphans/2025-02-14-16-19-22.png and /dev/null differ diff --git a/images/orphans/2025-02-14-16-20-12.png b/images/orphans/2025-02-14-16-20-12.png deleted file mode 100644 index 6ab79319..00000000 Binary files a/images/orphans/2025-02-14-16-20-12.png and /dev/null differ diff --git a/images/orphans/2025-02-14-16-21-14.png b/images/orphans/2025-02-14-16-21-14.png deleted file mode 100644 index c0f24878..00000000 Binary files a/images/orphans/2025-02-14-16-21-14.png and /dev/null differ diff --git a/images/orphans/2025-02-14-16-22-00.png b/images/orphans/2025-02-14-16-22-00.png deleted file mode 100644 index f4907518..00000000 Binary files a/images/orphans/2025-02-14-16-22-00.png and /dev/null differ diff --git a/images/orphans/2025-02-14-16-23-58.png b/images/orphans/2025-02-14-16-23-58.png deleted file mode 100644 index db44086f..00000000 Binary files a/images/orphans/2025-02-14-16-23-58.png and /dev/null differ diff --git a/images/orphans/2025-02-14-16-24-13.png b/images/orphans/2025-02-14-16-24-13.png deleted file mode 100644 index 1fe47ae8..00000000 Binary files a/images/orphans/2025-02-14-16-24-13.png and /dev/null differ diff --git a/images/orphans/2025-02-14-16-24-32.png b/images/orphans/2025-02-14-16-24-32.png deleted file mode 100644 index aae517b2..00000000 Binary files a/images/orphans/2025-02-14-16-24-32.png and /dev/null differ diff --git a/images/orphans/2025-02-14-16-32-57.png b/images/orphans/2025-02-14-16-32-57.png deleted file mode 100644 index 463e8b28..00000000 Binary files a/images/orphans/2025-02-14-16-32-57.png and /dev/null differ diff --git a/images/orphans/2025-02-14-16-36-31.png b/images/orphans/2025-02-14-16-36-31.png deleted file mode 100644 index 17e1a52e..00000000 Binary files a/images/orphans/2025-02-14-16-36-31.png and /dev/null differ diff --git a/images/orphans/2025-02-14-16-39-52.png b/images/orphans/2025-02-14-16-39-52.png deleted file mode 100644 index b9b9722b..00000000 Binary files a/images/orphans/2025-02-14-16-39-52.png and /dev/null differ diff --git a/images/orphans/2025-02-14-18-12-34.png b/images/orphans/2025-02-14-18-12-34.png deleted file mode 100644 index eaf15bac..00000000 Binary files a/images/orphans/2025-02-14-18-12-34.png and /dev/null differ diff --git a/images/orphans/2025-04-07-19-16-39.png b/images/orphans/2025-04-07-19-16-39.png deleted file mode 100644 index be6cc727..00000000 Binary files a/images/orphans/2025-04-07-19-16-39.png and /dev/null differ diff --git a/images/orphans/2025-04-07-19-20-32.png b/images/orphans/2025-04-07-19-20-32.png deleted file mode 100644 index bc99fe68..00000000 Binary files a/images/orphans/2025-04-07-19-20-32.png and /dev/null differ diff --git a/images/orphans/2025-04-09-11-17-12.png b/images/orphans/2025-04-09-11-17-12.png deleted file mode 100644 index 448c6e6c..00000000 Binary files a/images/orphans/2025-04-09-11-17-12.png and /dev/null differ diff --git a/images/orphans/2025-04-09-11-17-18.png b/images/orphans/2025-04-09-11-17-18.png deleted file mode 100644 index 026795b8..00000000 Binary files a/images/orphans/2025-04-09-11-17-18.png and /dev/null differ diff --git a/images/orphans/2025-04-09-11-17-55.png b/images/orphans/2025-04-09-11-17-55.png deleted file mode 100644 index 6f7a6683..00000000 Binary files a/images/orphans/2025-04-09-11-17-55.png and /dev/null differ diff --git a/images/orphans/2025-04-09-11-20-48.png b/images/orphans/2025-04-09-11-20-48.png deleted file mode 100644 index 1e768892..00000000 Binary files a/images/orphans/2025-04-09-11-20-48.png and /dev/null differ diff --git a/images/orphans/2025-04-09-11-30-06.png b/images/orphans/2025-04-09-11-30-06.png deleted file mode 100644 index 2ee5c6c4..00000000 Binary files a/images/orphans/2025-04-09-11-30-06.png and /dev/null differ diff --git a/images/orphans/2025-04-09-12-08-34.png b/images/orphans/2025-04-09-12-08-34.png deleted file mode 100644 index 26ab816f..00000000 Binary files a/images/orphans/2025-04-09-12-08-34.png and /dev/null differ diff --git a/images/orphans/2025-04-09-12-09-12.png b/images/orphans/2025-04-09-12-09-12.png deleted file mode 100644 index 4362728d..00000000 Binary files a/images/orphans/2025-04-09-12-09-12.png and /dev/null differ diff --git a/images/orphans/2025-04-09-12-10-49.png b/images/orphans/2025-04-09-12-10-49.png deleted file mode 100644 index 59a373f8..00000000 Binary files a/images/orphans/2025-04-09-12-10-49.png and /dev/null differ diff --git a/images/orphans/2025-04-09-12-13-06.png b/images/orphans/2025-04-09-12-13-06.png deleted file mode 100644 index 2a47326b..00000000 Binary files a/images/orphans/2025-04-09-12-13-06.png and /dev/null differ diff --git a/images/orphans/2025-04-09-12-13-56.png b/images/orphans/2025-04-09-12-13-56.png deleted file mode 100644 index e9d4fe83..00000000 Binary files a/images/orphans/2025-04-09-12-13-56.png and /dev/null differ diff --git a/images/orphans/2025-04-09-12-14-40.png b/images/orphans/2025-04-09-12-14-40.png deleted file mode 100644 index 2c1eedd2..00000000 Binary files a/images/orphans/2025-04-09-12-14-40.png and /dev/null differ diff --git a/images/orphans/2025-04-09-12-17-29.png b/images/orphans/2025-04-09-12-17-29.png deleted file mode 100644 index e75b2243..00000000 Binary files a/images/orphans/2025-04-09-12-17-29.png and /dev/null differ diff --git a/images/orphans/2025-04-11-15-05-26.png b/images/orphans/2025-04-11-15-05-26.png deleted file mode 100644 index de23c2d5..00000000 Binary files a/images/orphans/2025-04-11-15-05-26.png and /dev/null differ diff --git a/images/orphans/2025-04-11-16-13-28.png b/images/orphans/2025-04-11-16-13-28.png deleted file mode 100644 index 5482ce19..00000000 Binary files a/images/orphans/2025-04-11-16-13-28.png and /dev/null differ diff --git a/images/orphans/2025-04-11-16-13-47.png b/images/orphans/2025-04-11-16-13-47.png deleted file mode 100644 index c89fee3e..00000000 Binary files a/images/orphans/2025-04-11-16-13-47.png and /dev/null differ diff --git a/images/orphans/2025-04-11-16-14-50.png b/images/orphans/2025-04-11-16-14-50.png deleted file mode 100644 index 5e489b59..00000000 Binary files a/images/orphans/2025-04-11-16-14-50.png and /dev/null differ diff --git a/images/orphans/2025-04-14-18-04-30.png b/images/orphans/2025-04-14-18-04-30.png deleted file mode 100644 index f0c4ff98..00000000 Binary files a/images/orphans/2025-04-14-18-04-30.png and /dev/null differ diff --git a/images/orphans/2025-04-16-16-13-42.png b/images/orphans/2025-04-16-16-13-42.png deleted file mode 100644 index 63c19dbb..00000000 Binary files a/images/orphans/2025-04-16-16-13-42.png and /dev/null differ diff --git a/images/orphans/2025-04-17-15-19-22.png b/images/orphans/2025-04-17-15-19-22.png deleted file mode 100644 index aeb38df6..00000000 Binary files a/images/orphans/2025-04-17-15-19-22.png and /dev/null differ diff --git a/images/orphans/2025-04-17-16-08-04.png b/images/orphans/2025-04-17-16-08-04.png deleted file mode 100644 index 7f8f14f9..00000000 Binary files a/images/orphans/2025-04-17-16-08-04.png and /dev/null differ diff --git a/images/orphans/2025-06-09-10-57-08.png b/images/orphans/2025-06-09-10-57-08.png deleted file mode 100644 index 70c370ff..00000000 Binary files a/images/orphans/2025-06-09-10-57-08.png and /dev/null differ diff --git a/images/orphans/2025-06-09-11-59-43.png b/images/orphans/2025-06-09-11-59-43.png deleted file mode 100644 index b5c6cc50..00000000 Binary files a/images/orphans/2025-06-09-11-59-43.png and /dev/null differ diff --git a/images/orphans/2025-06-09-12-02-05.png b/images/orphans/2025-06-09-12-02-05.png deleted file mode 100644 index 8f2a4595..00000000 Binary files a/images/orphans/2025-06-09-12-02-05.png and /dev/null differ diff --git a/images/orphans/2025-07-18-15-54-01.png b/images/orphans/2025-07-18-15-54-01.png deleted file mode 100644 index 860c8ff7..00000000 Binary files a/images/orphans/2025-07-18-15-54-01.png and /dev/null differ diff --git a/images/orphans/2025-07-18-16-03-01.gif b/images/orphans/2025-07-18-16-03-01.gif deleted file mode 100644 index 4f755f20..00000000 Binary files a/images/orphans/2025-07-18-16-03-01.gif and /dev/null differ diff --git a/images/orphans/2025-07-18-16-03-02.gif b/images/orphans/2025-07-18-16-03-02.gif deleted file mode 100644 index 4d5f26ce..00000000 Binary files a/images/orphans/2025-07-18-16-03-02.gif and /dev/null differ diff --git a/images/orphans/2025-07-18-16-03-03.gif b/images/orphans/2025-07-18-16-03-03.gif deleted file mode 100644 index 808480a0..00000000 Binary files a/images/orphans/2025-07-18-16-03-03.gif and /dev/null differ diff --git a/images/orphans/2025-07-18-16-03-04.gif b/images/orphans/2025-07-18-16-03-04.gif deleted file mode 100644 index 0f1c35df..00000000 Binary files a/images/orphans/2025-07-18-16-03-04.gif and /dev/null differ diff --git a/images/orphans/2025-07-18-16-03-59.png b/images/orphans/2025-07-18-16-03-59.png deleted file mode 100644 index 83a7ded9..00000000 Binary files a/images/orphans/2025-07-18-16-03-59.png and /dev/null differ diff --git a/images/orphans/2025-07-18-16-04-22.png b/images/orphans/2025-07-18-16-04-22.png deleted file mode 100644 index 7a953899..00000000 Binary files a/images/orphans/2025-07-18-16-04-22.png and /dev/null differ diff --git a/images/orphans/2025-07-18-16-06-08.png b/images/orphans/2025-07-18-16-06-08.png deleted file mode 100644 index 420d15d5..00000000 Binary files a/images/orphans/2025-07-18-16-06-08.png and /dev/null differ diff --git a/images/orphans/2025-07-18-16-06-31.png b/images/orphans/2025-07-18-16-06-31.png deleted file mode 100644 index be0e73e1..00000000 Binary files a/images/orphans/2025-07-18-16-06-31.png and /dev/null differ diff --git a/images/orphans/2025-07-18-16-11-59.png b/images/orphans/2025-07-18-16-11-59.png deleted file mode 100644 index be0e73e1..00000000 Binary files a/images/orphans/2025-07-18-16-11-59.png and /dev/null differ diff --git a/images/orphans/2025-07-18-17-36-38.png b/images/orphans/2025-07-18-17-36-38.png deleted file mode 100644 index e5d5b4ea..00000000 Binary files a/images/orphans/2025-07-18-17-36-38.png and /dev/null differ diff --git a/images/orphans/2025-08-01-16-30-52.png b/images/orphans/2025-08-01-16-30-52.png deleted file mode 100644 index c79b7fad..00000000 Binary files a/images/orphans/2025-08-01-16-30-52.png and /dev/null differ diff --git a/images/orphans/2025-08-01-16-43-32.png b/images/orphans/2025-08-01-16-43-32.png deleted file mode 100644 index c0a26ac6..00000000 Binary files a/images/orphans/2025-08-01-16-43-32.png and /dev/null differ diff --git a/images/orphans/2025-08-01-16-51-11.png b/images/orphans/2025-08-01-16-51-11.png deleted file mode 100644 index eab459a7..00000000 Binary files a/images/orphans/2025-08-01-16-51-11.png and /dev/null differ diff --git a/images/orphans/2025-08-01-16-56-21.png b/images/orphans/2025-08-01-16-56-21.png deleted file mode 100644 index 84c29e2d..00000000 Binary files a/images/orphans/2025-08-01-16-56-21.png and /dev/null differ diff --git a/images/orphans/2025-08-01-17-13-02.gif b/images/orphans/2025-08-01-17-13-02.gif deleted file mode 100644 index 396ef60f..00000000 Binary files a/images/orphans/2025-08-01-17-13-02.gif and /dev/null differ diff --git a/images/orphans/2025-08-01-17-26-15.png b/images/orphans/2025-08-01-17-26-15.png deleted file mode 100644 index 4bbdab93..00000000 Binary files a/images/orphans/2025-08-01-17-26-15.png and /dev/null differ diff --git a/images/orphans/2025-08-01-17-28-13.png b/images/orphans/2025-08-01-17-28-13.png deleted file mode 100644 index 53cd078a..00000000 Binary files a/images/orphans/2025-08-01-17-28-13.png and /dev/null differ diff --git a/images/orphans/2025-08-01-17-30-16.gif b/images/orphans/2025-08-01-17-30-16.gif deleted file mode 100644 index 17160bc9..00000000 Binary files a/images/orphans/2025-08-01-17-30-16.gif and /dev/null differ diff --git a/images/orphans/2025-08-01-17-32-02.gif b/images/orphans/2025-08-01-17-32-02.gif deleted file mode 100644 index eb77ff4b..00000000 Binary files a/images/orphans/2025-08-01-17-32-02.gif and /dev/null differ diff --git a/images/orphans/2025-08-01-17-46-33.png b/images/orphans/2025-08-01-17-46-33.png deleted file mode 100644 index d56f52df..00000000 Binary files a/images/orphans/2025-08-01-17-46-33.png and /dev/null differ diff --git a/images/orphans/2025-08-12-20-22-29.png b/images/orphans/2025-08-12-20-22-29.png deleted file mode 100644 index b00ee2f1..00000000 Binary files a/images/orphans/2025-08-12-20-22-29.png and /dev/null differ diff --git a/images/orphans/2025-09-25-21-21-06.png b/images/orphans/2025-09-25-21-21-06.png deleted file mode 100644 index bdc67a4d..00000000 Binary files a/images/orphans/2025-09-25-21-21-06.png and /dev/null differ diff --git a/images/orphans/2025-09-25-21-36-33.png b/images/orphans/2025-09-25-21-36-33.png deleted file mode 100644 index 88ee37a9..00000000 Binary files a/images/orphans/2025-09-25-21-36-33.png and /dev/null differ diff --git a/images/orphans/2025-09-25-21-36-58.png b/images/orphans/2025-09-25-21-36-58.png deleted file mode 100644 index eef81f5e..00000000 Binary files a/images/orphans/2025-09-25-21-36-58.png and /dev/null differ diff --git a/images/orphans/2025-09-25-21-37-58.png b/images/orphans/2025-09-25-21-37-58.png deleted file mode 100644 index 66cb0716..00000000 Binary files a/images/orphans/2025-09-25-21-37-58.png and /dev/null differ diff --git a/images/orphans/2025-09-29-23-13-17.png b/images/orphans/2025-09-29-23-13-17.png deleted file mode 100644 index 1c70b7a4..00000000 Binary files a/images/orphans/2025-09-29-23-13-17.png and /dev/null differ diff --git a/images/orphans/2025-09-29-23-13-31.png b/images/orphans/2025-09-29-23-13-31.png deleted file mode 100644 index ac227aed..00000000 Binary files a/images/orphans/2025-09-29-23-13-31.png and /dev/null differ diff --git a/images/orphans/2025-09-29-23-16-11.png b/images/orphans/2025-09-29-23-16-11.png deleted file mode 100644 index c18f541c..00000000 Binary files a/images/orphans/2025-09-29-23-16-11.png and /dev/null differ diff --git a/images/orphans/2025-09-29-23-18-02.png b/images/orphans/2025-09-29-23-18-02.png deleted file mode 100644 index a224930a..00000000 Binary files a/images/orphans/2025-09-29-23-18-02.png and /dev/null differ diff --git a/images/orphans/2025-10-10-19-36-09.png b/images/orphans/2025-10-10-19-36-09.png deleted file mode 100644 index 77f5593e..00000000 Binary files a/images/orphans/2025-10-10-19-36-09.png and /dev/null differ diff --git a/images/orphans/2025-10-10-19-38-21.png b/images/orphans/2025-10-10-19-38-21.png deleted file mode 100644 index f0dddf78..00000000 Binary files a/images/orphans/2025-10-10-19-38-21.png and /dev/null differ diff --git a/images/orphans/2025-10-10-19-44-41.png b/images/orphans/2025-10-10-19-44-41.png deleted file mode 100644 index 58dc00fe..00000000 Binary files a/images/orphans/2025-10-10-19-44-41.png and /dev/null differ diff --git a/images/orphans/2025-10-10-20-18-29.png b/images/orphans/2025-10-10-20-18-29.png deleted file mode 100644 index 221ff2a3..00000000 Binary files a/images/orphans/2025-10-10-20-18-29.png and /dev/null differ diff --git a/images/orphans/2025-10-10-20-50-14.png b/images/orphans/2025-10-10-20-50-14.png deleted file mode 100644 index f4bfd826..00000000 Binary files a/images/orphans/2025-10-10-20-50-14.png and /dev/null differ diff --git a/images/orphans/2025-10-10-20-50-42.png b/images/orphans/2025-10-10-20-50-42.png deleted file mode 100644 index 60d763d0..00000000 Binary files a/images/orphans/2025-10-10-20-50-42.png and /dev/null differ diff --git a/images/orphans/2025-10-10-20-51-59.png b/images/orphans/2025-10-10-20-51-59.png deleted file mode 100644 index 2e033bea..00000000 Binary files a/images/orphans/2025-10-10-20-51-59.png and /dev/null differ diff --git a/images/orphans/2025-10-10-20-52-37.png b/images/orphans/2025-10-10-20-52-37.png deleted file mode 100644 index 3d1d4da3..00000000 Binary files a/images/orphans/2025-10-10-20-52-37.png and /dev/null differ diff --git a/images/orphans/2025-10-10-20-53-33.png b/images/orphans/2025-10-10-20-53-33.png deleted file mode 100644 index 297fcb9e..00000000 Binary files a/images/orphans/2025-10-10-20-53-33.png and /dev/null differ diff --git a/images/orphans/2025-10-10-20-57-05.png b/images/orphans/2025-10-10-20-57-05.png deleted file mode 100644 index 628335d3..00000000 Binary files a/images/orphans/2025-10-10-20-57-05.png and /dev/null differ diff --git a/images/orphans/2025-10-10-21-03-46.png b/images/orphans/2025-10-10-21-03-46.png deleted file mode 100644 index 520c2040..00000000 Binary files a/images/orphans/2025-10-10-21-03-46.png and /dev/null differ diff --git a/images/orphans/2025-10-10-21-04-09.png b/images/orphans/2025-10-10-21-04-09.png deleted file mode 100644 index 863d7981..00000000 Binary files a/images/orphans/2025-10-10-21-04-09.png and /dev/null differ diff --git a/images/orphans/2025-10-10-21-04-33.png b/images/orphans/2025-10-10-21-04-33.png deleted file mode 100644 index 7302862e..00000000 Binary files a/images/orphans/2025-10-10-21-04-33.png and /dev/null differ diff --git a/images/orphans/2025-10-10-21-04-44.png b/images/orphans/2025-10-10-21-04-44.png deleted file mode 100644 index 0d42069b..00000000 Binary files a/images/orphans/2025-10-10-21-04-44.png and /dev/null differ diff --git a/images/orphans/2025-10-10-21-04-57.png b/images/orphans/2025-10-10-21-04-57.png deleted file mode 100644 index 2271872e..00000000 Binary files a/images/orphans/2025-10-10-21-04-57.png and /dev/null differ diff --git a/images/orphans/2025-11-30-22-31-01.png b/images/orphans/2025-11-30-22-31-01.png deleted file mode 100644 index e2673df4..00000000 Binary files a/images/orphans/2025-11-30-22-31-01.png and /dev/null differ diff --git a/images/orphans/2025-11-30-22-40-45.png b/images/orphans/2025-11-30-22-40-45.png deleted file mode 100644 index a236fc4b..00000000 Binary files a/images/orphans/2025-11-30-22-40-45.png and /dev/null differ diff --git a/images/orphans/2025-11-30-22-51-26.png b/images/orphans/2025-11-30-22-51-26.png deleted file mode 100644 index 2d3a5308..00000000 Binary files a/images/orphans/2025-11-30-22-51-26.png and /dev/null differ diff --git a/images/orphans/2025-11-30-22-54-29.png b/images/orphans/2025-11-30-22-54-29.png deleted file mode 100644 index fbce8adf..00000000 Binary files a/images/orphans/2025-11-30-22-54-29.png and /dev/null differ diff --git a/images/orphans/2025-12-03-01-27-59.png b/images/orphans/2025-12-03-01-27-59.png deleted file mode 100644 index 9fa9c737..00000000 Binary files a/images/orphans/2025-12-03-01-27-59.png and /dev/null differ diff --git a/images/orphans/2025-12-03-18-19-56.png b/images/orphans/2025-12-03-18-19-56.png deleted file mode 100644 index 9cfd5f54..00000000 Binary files a/images/orphans/2025-12-03-18-19-56.png and /dev/null differ diff --git a/images/orphans/94b64982f27826a6.png b/images/orphans/94b64982f27826a6.png deleted file mode 100644 index 3303c773..00000000 Binary files a/images/orphans/94b64982f27826a6.png and /dev/null differ diff --git a/images/orphans/af529f12781fdef5.png b/images/orphans/af529f12781fdef5.png deleted file mode 100644 index 68c712d6..00000000 Binary files a/images/orphans/af529f12781fdef5.png and /dev/null differ diff --git a/images/orphans/b87e569010f9b6d6.png b/images/orphans/b87e569010f9b6d6.png deleted file mode 100644 index a61cbb12..00000000 Binary files a/images/orphans/b87e569010f9b6d6.png and /dev/null differ diff --git a/images/orphans/basic/121f15d4ce4ec2c0.png b/images/orphans/basic/121f15d4ce4ec2c0.png deleted file mode 100644 index c46bcab6..00000000 Binary files a/images/orphans/basic/121f15d4ce4ec2c0.png and /dev/null differ diff --git a/images/orphans/basic/1685253aac7425c2.png b/images/orphans/basic/1685253aac7425c2.png deleted file mode 100644 index 129c0883..00000000 Binary files a/images/orphans/basic/1685253aac7425c2.png and /dev/null differ diff --git a/images/orphans/basic/2957241a218c70d8.png b/images/orphans/basic/2957241a218c70d8.png deleted file mode 100644 index af5416dd..00000000 Binary files a/images/orphans/basic/2957241a218c70d8.png and /dev/null differ diff --git a/images/orphans/basic/30b53d0786df60f0.png b/images/orphans/basic/30b53d0786df60f0.png deleted file mode 100644 index d187170d..00000000 Binary files a/images/orphans/basic/30b53d0786df60f0.png and /dev/null differ diff --git a/images/orphans/basic/3363a0e6a74006ad.png b/images/orphans/basic/3363a0e6a74006ad.png deleted file mode 100644 index 9c23d14d..00000000 Binary files a/images/orphans/basic/3363a0e6a74006ad.png and /dev/null differ diff --git a/images/orphans/basic/3e0dc36fb6c5f104.png b/images/orphans/basic/3e0dc36fb6c5f104.png deleted file mode 100644 index 2f1bedf1..00000000 Binary files a/images/orphans/basic/3e0dc36fb6c5f104.png and /dev/null differ diff --git a/images/orphans/basic/4627a433dbd07d3f.png b/images/orphans/basic/4627a433dbd07d3f.png deleted file mode 100644 index 16cbb481..00000000 Binary files a/images/orphans/basic/4627a433dbd07d3f.png and /dev/null differ diff --git a/images/orphans/basic/73c0fa55b0ca862b.png b/images/orphans/basic/73c0fa55b0ca862b.png deleted file mode 100644 index 255b03db..00000000 Binary files a/images/orphans/basic/73c0fa55b0ca862b.png and /dev/null differ diff --git a/images/orphans/basic/79895683e901fa9d.png b/images/orphans/basic/79895683e901fa9d.png deleted file mode 100644 index 75d6b4d8..00000000 Binary files a/images/orphans/basic/79895683e901fa9d.png and /dev/null differ diff --git a/images/orphans/basic/cb23e28c58fe2991.png b/images/orphans/basic/cb23e28c58fe2991.png deleted file mode 100644 index d6659377..00000000 Binary files a/images/orphans/basic/cb23e28c58fe2991.png and /dev/null differ diff --git a/images/orphans/basic/d264dc76e7d1f2f7.png b/images/orphans/basic/d264dc76e7d1f2f7.png deleted file mode 100644 index fba65a1d..00000000 Binary files a/images/orphans/basic/d264dc76e7d1f2f7.png and /dev/null differ diff --git a/images/orphans/basic/d804cc36629aea42.png b/images/orphans/basic/d804cc36629aea42.png deleted file mode 100644 index cf86c4e7..00000000 Binary files a/images/orphans/basic/d804cc36629aea42.png and /dev/null differ diff --git a/images/orphans/basic/ed3930c38e51679e.png b/images/orphans/basic/ed3930c38e51679e.png deleted file mode 100644 index 89f184af..00000000 Binary files a/images/orphans/basic/ed3930c38e51679e.png and /dev/null differ diff --git a/images/orphans/basic/fb5eeef11f2ea3a4.png b/images/orphans/basic/fb5eeef11f2ea3a4.png deleted file mode 100644 index f790ad8e..00000000 Binary files a/images/orphans/basic/fb5eeef11f2ea3a4.png and /dev/null differ diff --git a/images/orphans/basic/fe637cdf26bbd5e1.png b/images/orphans/basic/fe637cdf26bbd5e1.png deleted file mode 100644 index 79e643f2..00000000 Binary files a/images/orphans/basic/fe637cdf26bbd5e1.png and /dev/null differ diff --git a/images/orphans/basic/field/basic-field/6707e6f0d74b4508.png b/images/orphans/basic/field/basic-field/6707e6f0d74b4508.png deleted file mode 100644 index e3cbbd72..00000000 Binary files a/images/orphans/basic/field/basic-field/6707e6f0d74b4508.png and /dev/null differ diff --git a/images/orphans/basic/field/basic-field/9b9dff4ca1d72ab6.png b/images/orphans/basic/field/basic-field/9b9dff4ca1d72ab6.png deleted file mode 100644 index 9cd2adab..00000000 Binary files a/images/orphans/basic/field/basic-field/9b9dff4ca1d72ab6.png and /dev/null differ diff --git a/images/orphans/basic/field/basic-field/a0002474aed86c72.png b/images/orphans/basic/field/basic-field/a0002474aed86c72.png deleted file mode 100644 index fd5306c2..00000000 Binary files a/images/orphans/basic/field/basic-field/a0002474aed86c72.png and /dev/null differ diff --git a/images/orphans/basic/field/basic-field/dfd15d0ce947ea3b.png b/images/orphans/basic/field/basic-field/dfd15d0ce947ea3b.png deleted file mode 100644 index 5796190d..00000000 Binary files a/images/orphans/basic/field/basic-field/dfd15d0ce947ea3b.png and /dev/null differ diff --git a/images/orphans/basic/record/0568186abb541c03.png b/images/orphans/basic/record/0568186abb541c03.png deleted file mode 100644 index f5707717..00000000 Binary files a/images/orphans/basic/record/0568186abb541c03.png and /dev/null differ diff --git a/images/orphans/basic/record/09280e87f37444da.png b/images/orphans/basic/record/09280e87f37444da.png deleted file mode 100644 index 08eedd64..00000000 Binary files a/images/orphans/basic/record/09280e87f37444da.png and /dev/null differ diff --git a/images/orphans/basic/record/3c973bc6ffedcca9.png b/images/orphans/basic/record/3c973bc6ffedcca9.png deleted file mode 100644 index 557adcb7..00000000 Binary files a/images/orphans/basic/record/3c973bc6ffedcca9.png and /dev/null differ diff --git a/images/orphans/basic/record/641ef0da9a2e8114.png b/images/orphans/basic/record/641ef0da9a2e8114.png deleted file mode 100644 index 28999c32..00000000 Binary files a/images/orphans/basic/record/641ef0da9a2e8114.png and /dev/null differ diff --git a/images/orphans/basic/record/e5e2559495368c6b.png b/images/orphans/basic/record/e5e2559495368c6b.png deleted file mode 100644 index 6434dabd..00000000 Binary files a/images/orphans/basic/record/e5e2559495368c6b.png and /dev/null differ diff --git a/images/orphans/basic/record/e7240cacdc090d6a.png b/images/orphans/basic/record/e7240cacdc090d6a.png deleted file mode 100644 index 84520adf..00000000 Binary files a/images/orphans/basic/record/e7240cacdc090d6a.png and /dev/null differ diff --git a/images/orphans/basic/record/fcc8b88d89dcdb4b.png b/images/orphans/basic/record/fcc8b88d89dcdb4b.png deleted file mode 100644 index 9e4dc737..00000000 Binary files a/images/orphans/basic/record/fcc8b88d89dcdb4b.png and /dev/null differ diff --git a/images/orphans/basic/view/data-tools/0212e940e492680a.png b/images/orphans/basic/view/data-tools/0212e940e492680a.png deleted file mode 100644 index 08786fd1..00000000 Binary files a/images/orphans/basic/view/data-tools/0212e940e492680a.png and /dev/null differ diff --git a/images/orphans/basic/view/data-tools/03a08cf72997676b.png b/images/orphans/basic/view/data-tools/03a08cf72997676b.png deleted file mode 100644 index f5f1278b..00000000 Binary files a/images/orphans/basic/view/data-tools/03a08cf72997676b.png and /dev/null differ diff --git a/images/orphans/basic/view/data-tools/32da63290178330c.png b/images/orphans/basic/view/data-tools/32da63290178330c.png deleted file mode 100644 index 1a92bfc7..00000000 Binary files a/images/orphans/basic/view/data-tools/32da63290178330c.png and /dev/null differ diff --git a/images/orphans/basic/view/data-tools/3c460216b8ab84e2.png b/images/orphans/basic/view/data-tools/3c460216b8ab84e2.png deleted file mode 100644 index a3e3e0f4..00000000 Binary files a/images/orphans/basic/view/data-tools/3c460216b8ab84e2.png and /dev/null differ diff --git a/images/orphans/basic/view/data-tools/43ab5019721bf03b.png b/images/orphans/basic/view/data-tools/43ab5019721bf03b.png deleted file mode 100644 index ac3b58b8..00000000 Binary files a/images/orphans/basic/view/data-tools/43ab5019721bf03b.png and /dev/null differ diff --git a/images/orphans/basic/view/data-tools/4c1332cabb06d3e1.png b/images/orphans/basic/view/data-tools/4c1332cabb06d3e1.png deleted file mode 100644 index f9988c23..00000000 Binary files a/images/orphans/basic/view/data-tools/4c1332cabb06d3e1.png and /dev/null differ diff --git a/images/orphans/basic/view/data-tools/4ebc20280e8277df.png b/images/orphans/basic/view/data-tools/4ebc20280e8277df.png deleted file mode 100644 index a868b9f0..00000000 Binary files a/images/orphans/basic/view/data-tools/4ebc20280e8277df.png and /dev/null differ diff --git a/images/orphans/basic/view/data-tools/7383faa5568da1ac.png b/images/orphans/basic/view/data-tools/7383faa5568da1ac.png deleted file mode 100644 index 034a6d46..00000000 Binary files a/images/orphans/basic/view/data-tools/7383faa5568da1ac.png and /dev/null differ diff --git a/images/orphans/basic/view/data-tools/8019afe92de4be1f.png b/images/orphans/basic/view/data-tools/8019afe92de4be1f.png deleted file mode 100644 index 067b8f88..00000000 Binary files a/images/orphans/basic/view/data-tools/8019afe92de4be1f.png and /dev/null differ diff --git a/images/orphans/basic/view/data-tools/8120e34a54c492bc.png b/images/orphans/basic/view/data-tools/8120e34a54c492bc.png deleted file mode 100644 index 0f31bbd3..00000000 Binary files a/images/orphans/basic/view/data-tools/8120e34a54c492bc.png and /dev/null differ diff --git a/images/orphans/basic/view/data-tools/812929f226f9a449.png b/images/orphans/basic/view/data-tools/812929f226f9a449.png deleted file mode 100644 index 3f38c893..00000000 Binary files a/images/orphans/basic/view/data-tools/812929f226f9a449.png and /dev/null differ diff --git a/images/orphans/basic/view/data-tools/848352cbe43065b5.png b/images/orphans/basic/view/data-tools/848352cbe43065b5.png deleted file mode 100644 index 7383318a..00000000 Binary files a/images/orphans/basic/view/data-tools/848352cbe43065b5.png and /dev/null differ diff --git a/images/orphans/basic/view/data-tools/932f086eaf565182.png b/images/orphans/basic/view/data-tools/932f086eaf565182.png deleted file mode 100644 index c5941b09..00000000 Binary files a/images/orphans/basic/view/data-tools/932f086eaf565182.png and /dev/null differ diff --git a/images/orphans/basic/view/data-tools/9e7d85d75a8a3416.png b/images/orphans/basic/view/data-tools/9e7d85d75a8a3416.png deleted file mode 100644 index e225fd9b..00000000 Binary files a/images/orphans/basic/view/data-tools/9e7d85d75a8a3416.png and /dev/null differ diff --git a/images/orphans/basic/view/data-tools/aa09118daa8eb936.png b/images/orphans/basic/view/data-tools/aa09118daa8eb936.png deleted file mode 100644 index 5ff3f583..00000000 Binary files a/images/orphans/basic/view/data-tools/aa09118daa8eb936.png and /dev/null differ diff --git a/images/orphans/basic/view/data-tools/c26b0dc795cf9194.png b/images/orphans/basic/view/data-tools/c26b0dc795cf9194.png deleted file mode 100644 index c32369e0..00000000 Binary files a/images/orphans/basic/view/data-tools/c26b0dc795cf9194.png and /dev/null differ diff --git a/images/orphans/basic/view/data-tools/cae053ab673e05e4.png b/images/orphans/basic/view/data-tools/cae053ab673e05e4.png deleted file mode 100644 index 5d0ad4cc..00000000 Binary files a/images/orphans/basic/view/data-tools/cae053ab673e05e4.png and /dev/null differ diff --git a/images/orphans/basic/view/data-tools/d7a548bc0e9a5b5d.png b/images/orphans/basic/view/data-tools/d7a548bc0e9a5b5d.png deleted file mode 100644 index 2872367b..00000000 Binary files a/images/orphans/basic/view/data-tools/d7a548bc0e9a5b5d.png and /dev/null differ diff --git a/images/orphans/basic/view/data-tools/fa9ab917d6b59fe9.png b/images/orphans/basic/view/data-tools/fa9ab917d6b59fe9.png deleted file mode 100644 index c5504275..00000000 Binary files a/images/orphans/basic/view/data-tools/fa9ab917d6b59fe9.png and /dev/null differ diff --git a/images/orphans/developer/api/17f341d5b0b07ff4.png b/images/orphans/developer/api/17f341d5b0b07ff4.png deleted file mode 100644 index 08c0e6d4..00000000 Binary files a/images/orphans/developer/api/17f341d5b0b07ff4.png and /dev/null differ diff --git a/images/orphans/developer/api/262744d8f8c9d0a3.png b/images/orphans/developer/api/262744d8f8c9d0a3.png deleted file mode 100644 index 2fd1f657..00000000 Binary files a/images/orphans/developer/api/262744d8f8c9d0a3.png and /dev/null differ diff --git a/images/orphans/developer/api/3a3abbbb21e81c7c.png b/images/orphans/developer/api/3a3abbbb21e81c7c.png deleted file mode 100644 index b31f3d26..00000000 Binary files a/images/orphans/developer/api/3a3abbbb21e81c7c.png and /dev/null differ diff --git a/images/orphans/developer/api/830177806519ba17.png b/images/orphans/developer/api/830177806519ba17.png deleted file mode 100644 index 0a9858ee..00000000 Binary files a/images/orphans/developer/api/830177806519ba17.png and /dev/null differ diff --git a/images/orphans/developer/api/88aefa10b5ffe372.png b/images/orphans/developer/api/88aefa10b5ffe372.png deleted file mode 100644 index a8710a36..00000000 Binary files a/images/orphans/developer/api/88aefa10b5ffe372.png and /dev/null differ diff --git a/images/orphans/developer/api/99efd16eae04feac.png b/images/orphans/developer/api/99efd16eae04feac.png deleted file mode 100644 index 72f4780e..00000000 Binary files a/images/orphans/developer/api/99efd16eae04feac.png and /dev/null differ diff --git a/images/orphans/developer/api/9f35f5ecaf38f264.png b/images/orphans/developer/api/9f35f5ecaf38f264.png deleted file mode 100644 index c863c350..00000000 Binary files a/images/orphans/developer/api/9f35f5ecaf38f264.png and /dev/null differ diff --git a/images/orphans/developer/api/a2c6a5f136767885.png b/images/orphans/developer/api/a2c6a5f136767885.png deleted file mode 100644 index f7f60c2e..00000000 Binary files a/images/orphans/developer/api/a2c6a5f136767885.png and /dev/null differ diff --git a/images/orphans/developer/api/a7813345bcd4a8e3.png b/images/orphans/developer/api/a7813345bcd4a8e3.png deleted file mode 100644 index cbe7e1b4..00000000 Binary files a/images/orphans/developer/api/a7813345bcd4a8e3.png and /dev/null differ diff --git a/images/orphans/developer/api/b7c3b29073bc6768.png b/images/orphans/developer/api/b7c3b29073bc6768.png deleted file mode 100644 index d8386ee8..00000000 Binary files a/images/orphans/developer/api/b7c3b29073bc6768.png and /dev/null differ diff --git a/images/orphans/developer/api/d7139d0c9c0960b5.png b/images/orphans/developer/api/d7139d0c9c0960b5.png deleted file mode 100644 index f8b8cfca..00000000 Binary files a/images/orphans/developer/api/d7139d0c9c0960b5.png and /dev/null differ diff --git a/images/orphans/developer/api/fa9fb4d225e32565.png b/images/orphans/developer/api/fa9fb4d225e32565.png deleted file mode 100644 index 8d2a45a8..00000000 Binary files a/images/orphans/developer/api/fa9fb4d225e32565.png and /dev/null differ diff --git a/images/orphans/developer/dd60fcb2becb23c5.png b/images/orphans/developer/dd60fcb2becb23c5.png deleted file mode 100644 index f0481430..00000000 Binary files a/images/orphans/developer/dd60fcb2becb23c5.png and /dev/null differ diff --git a/images/orphans/developer/integration/sso/d9e424732c7bd9c7.png b/images/orphans/developer/integration/sso/d9e424732c7bd9c7.png deleted file mode 100644 index 3e822b9b..00000000 Binary files a/images/orphans/developer/integration/sso/d9e424732c7bd9c7.png and /dev/null differ diff --git a/images/orphans/image.png.png b/images/orphans/image.png.png deleted file mode 100644 index f809c685..00000000 Binary files a/images/orphans/image.png.png and /dev/null differ diff --git a/images/orphans/pending-configuration.png b/images/orphans/pending-configuration.png deleted file mode 100644 index ed8335d0..00000000 Binary files a/images/orphans/pending-configuration.png and /dev/null differ diff --git a/images/orphans/self-hosting/77a397abbfab3574.png b/images/orphans/self-hosting/77a397abbfab3574.png deleted file mode 100644 index c251a579..00000000 Binary files a/images/orphans/self-hosting/77a397abbfab3574.png and /dev/null differ diff --git a/images/orphans/self-hosting/a49c922f34692e28.png b/images/orphans/self-hosting/a49c922f34692e28.png deleted file mode 100644 index ffd3ba30..00000000 Binary files a/images/orphans/self-hosting/a49c922f34692e28.png and /dev/null differ diff --git a/images/orphans/self-hosting/a7eb9716b365ddaf.png b/images/orphans/self-hosting/a7eb9716b365ddaf.png deleted file mode 100644 index eca59c9e..00000000 Binary files a/images/orphans/self-hosting/a7eb9716b365ddaf.png and /dev/null differ diff --git a/images/staged-base-preview/2026-05-11-base-en-duplicate-base.png b/images/staged-base-preview/2026-05-11-base-en-duplicate-base.png deleted file mode 100644 index 3c5319d4..00000000 Binary files a/images/staged-base-preview/2026-05-11-base-en-duplicate-base.png and /dev/null differ diff --git a/images/staged-base-preview/2026-05-11-base-en-export-base.png b/images/staged-base-preview/2026-05-11-base-en-export-base.png deleted file mode 100644 index 8f96cf90..00000000 Binary files a/images/staged-base-preview/2026-05-11-base-en-export-base.png and /dev/null differ diff --git a/images/staged-base-preview/2026-05-11-base-en-import-base.png b/images/staged-base-preview/2026-05-11-base-en-import-base.png deleted file mode 100644 index c9b9d81c..00000000 Binary files a/images/staged-base-preview/2026-05-11-base-en-import-base.png and /dev/null differ diff --git a/images/staged-field-preview/2026-05-11-field-35-4c671faa180b1fe6.png b/images/staged-field-preview/2026-05-11-field-35-4c671faa180b1fe6.png deleted file mode 100644 index ef0ce763..00000000 Binary files a/images/staged-field-preview/2026-05-11-field-35-4c671faa180b1fe6.png and /dev/null differ diff --git a/images/staged-field-preview/2026-05-11-field-36-738cf1737dbdd0c1.png b/images/staged-field-preview/2026-05-11-field-36-738cf1737dbdd0c1.png deleted file mode 100644 index 7f0b131b..00000000 Binary files a/images/staged-field-preview/2026-05-11-field-36-738cf1737dbdd0c1.png and /dev/null differ diff --git a/images/staged-field-preview/2026-05-11-field-37-7ab6c9660947e51e.png b/images/staged-field-preview/2026-05-11-field-37-7ab6c9660947e51e.png deleted file mode 100644 index b8cc28b5..00000000 Binary files a/images/staged-field-preview/2026-05-11-field-37-7ab6c9660947e51e.png and /dev/null differ diff --git a/images/staged-field-preview/2026-05-11-field-38-9483a401484f3026.png b/images/staged-field-preview/2026-05-11-field-38-9483a401484f3026.png deleted file mode 100644 index 1973f0a6..00000000 Binary files a/images/staged-field-preview/2026-05-11-field-38-9483a401484f3026.png and /dev/null differ diff --git a/style.css b/style.css index 6a6c6ff4..4ccebe57 100644 --- a/style.css +++ b/style.css @@ -180,6 +180,18 @@ html.dark[data-current-path$="/changelog"] #table-of-contents .toc-item[data-act border-color: rgba(255, 255, 255, 0.12); } +.docs-inline-icon { + display: inline-block; + width: 1.4em; + height: 1.4em; + margin: 0 0.1em; + vertical-align: -0.35em; +} + +.dark .docs-inline-icon { + filter: invert(1); +} + @media (max-width: 640px) { .docs-screenshot { margin: 1.25rem auto; diff --git a/zh/basic/ai/ai-chat.mdx b/zh/basic/ai/ai-chat.mdx index 2a4462aa..edc25ada 100644 --- a/zh/basic/ai/ai-chat.mdx +++ b/zh/basic/ai/ai-chat.mdx @@ -12,7 +12,7 @@ AI 会优先参考当前页面。需要跨表格、视图、应用、自动化 ## 打开方式 -打开表格或视图后,点击右上角的 **Cuppy** 图标,即可打开 AI 对话。在输入框中描述问题或任务;如果任务会修改数据或创建节点,建议先让 AI 列出计划,再确认执行。 +打开表格或视图后,点击右上角的 Cuppy,即可打开 AI 对话。在输入框中描述问题或任务;如果任务会修改数据或创建节点,建议先让 AI 列出计划,再确认执行。 ## AI 会参考哪些内容 diff --git a/zh/basic/ai/app-builder.mdx b/zh/basic/ai/app-builder.mdx index 42ca9e8a..9e5c2f8f 100644 --- a/zh/basic/ai/app-builder.mdx +++ b/zh/basic/ai/app-builder.mdx @@ -24,6 +24,12 @@ Teable 应用构建器 (App Builder) 允许您在不编写代码的情况下, 应用构建器为非技术用户和开发者提供了双重界面。 +应用构建器编辑器界面 + ### 1. 对话界面 (AI 驱动) 这是您的应用控制中心。 @@ -69,7 +75,11 @@ Teable 应用构建器 (App Builder) 允许您在不编写代码的情况下, - ZIP 中的根目录 `.env` 会被读取为应用的自定义环境变量。其他 `.env*` 变体(如 `.env.local`)会被忽略。 -![](/images/2026-02-28-18-23-27.png) +应用构建器代码编辑器 ## 发布与管理 @@ -80,16 +90,34 @@ Teable 应用构建器 (App Builder) 允许您在不编写代码的情况下, - **公开链接**:Teable 会为您的应用生成一个安全的、可公开访问的 URL。 - **自定义域名**:支持绑定您自己的域名。 +发布应用菜单 + ### 自定义域名 在 **自定义域名** 中可以为已发布应用绑定访问域名。建议使用子域名,例如 `app.yourdomain.com`。输入域名后,Teable 会显示需要添加的 DNS 记录;在域名服务商处添加记录,等待生效后回到 Teable 完成验证。 也可以使用 `teable.app` 下可用的子域名,例如 `your-name.teable.app`。 +自定义域名设置 + ### 应用登录 在应用顶部点击 **添加登录**,可以要求访问者登录后再使用应用。配置后,该按钮会变为 **登录设置**。 +应用登录设置 + 启用登录时: 1. 选择登录用户的存储位置。可以创建 **用户** 表,也可以复用已有的、包含邮箱字段的表。每位登录用户会作为一条记录保存,同一用户表可被多个应用复用。 @@ -105,6 +133,12 @@ Teable 自动跟踪每一次部署。 - 点击 **历史** 按钮(时钟图标)查看所有已部署的版本列表。 - **一键回滚**:如果新的更新出现问题,您可以即时将线上应用恢复到任何之前的稳定版本。 +应用版本历史 + ### 自动修复 (Auto-fix) 如果您的自定义代码导致构建错误,部署将会失败。 diff --git a/zh/basic/ai/custom-model.mdx b/zh/basic/ai/custom-model.mdx index 3502de89..016cb983 100644 --- a/zh/basic/ai/custom-model.mdx +++ b/zh/basic/ai/custom-model.mdx @@ -25,6 +25,12 @@ description: 在空间中开启 AI 能力并添加模型提供商,用于 AI 2. 点击右上角 **设置**。 3. 进入 **AI 配置**。 +AI 配置页面 + ## 配置步骤 在 **AI 能力** 中按需开启: @@ -42,6 +48,12 @@ description: 在空间中开启 AI 能力并添加模型提供商,用于 AI - **API 密钥**:填写服务商提供的 API 密钥。 - **模型**:填写要接入的模型名称,多个模型之间使用英文逗号分隔。 +添加模型提供商弹窗 + #### Agent 支持范围 为保证体验,请在 **AI Chat** 和 **App Builder** 中使用下方支持的模型。列表外模型可能在 **AI 字段** 或**自动化**等部分 AI 功能中可用。对于 **AI Chat** 和 **App Builder**,不支持的模型更容易出现 Agent 效果不稳定、工具能力缺失或运行时报错。如您使用范围外的端点、提供商或模型,Teable 不提供故障排查或效果支持。 diff --git a/zh/basic/automation/actions/ai/ai-generate.mdx b/zh/basic/automation/actions/ai/ai-generate.mdx index 11507812..348e5a20 100644 --- a/zh/basic/automation/actions/ai/ai-generate.mdx +++ b/zh/basic/automation/actions/ai/ai-generate.mdx @@ -174,6 +174,6 @@ AI 会为你处理一切:选择合适的触发器和操作,映射字段, ## 相关文档 - [循环执行](/zh/basic/automation/actions/logic/loop-run) -- [运行脚本指南](/zh/basic/automation/ai/scripting/ai-script-guide) +- [运行脚本](/zh/basic/automation/ai/scripting/runscript) - [发送邮件](/zh/basic/automation/actions/communication/send-email-overview) - [更新记录](/zh/basic/automation/actions/records/update-record) diff --git a/zh/basic/automation/actions/communication/smtp-sender.mdx b/zh/basic/automation/actions/communication/smtp-sender.mdx index 808106ca..3a0546f5 100644 --- a/zh/basic/automation/actions/communication/smtp-sender.mdx +++ b/zh/basic/automation/actions/communication/smtp-sender.mdx @@ -87,5 +87,5 @@ description: "配置自定义 SMTP 服务器和发件人信息用于自动化邮 ## 相关文档 -- [发送邮件](/zh/basic/automation/actions/communication/send-email) +- [发送邮件](/zh/basic/automation/actions/communication/send-email-overview) - [邮件接收时](/zh/basic/automation/trigger/email/email-received-overview) diff --git a/zh/basic/automation/actions/logic/http-request.mdx b/zh/basic/automation/actions/logic/http-request.mdx index 11b53d61..a46e22eb 100644 --- a/zh/basic/automation/actions/logic/http-request.mdx +++ b/zh/basic/automation/actions/logic/http-request.mdx @@ -172,4 +172,4 @@ HTTP 请求执行后,响应数据可供后续步骤引用。通常包括: - [循环执行](/zh/basic/automation/actions/logic/loop-run) - [Webhook 接收时](/zh/basic/automation/trigger/external/webhook-received) -- [运行脚本指南](/zh/basic/automation/ai/scripting/ai-script-guide) +- [运行脚本](/zh/basic/automation/ai/scripting/runscript) diff --git a/zh/basic/automation/ai/scripting/ai-script-guide.mdx b/zh/basic/automation/ai/scripting/runscript.mdx similarity index 95% rename from zh/basic/automation/ai/scripting/ai-script-guide.mdx rename to zh/basic/automation/ai/scripting/runscript.mdx index a4b589b0..96ab5168 100644 --- a/zh/basic/automation/ai/scripting/ai-script-guide.mdx +++ b/zh/basic/automation/ai/scripting/runscript.mdx @@ -1,9 +1,15 @@ --- -title: "运行脚本指南" +title: "运行脚本" description: "在安全沙箱中运行自定义 JavaScript,处理内置操作无法覆盖的逻辑" --- {/* mintlify-resync: 2026-05-14 */} + +我们强烈建议使用运行脚本来搭建自动化,因为它可以覆盖所有操作行为,包括原本需要手动搭建的操作。你只需在 AI 对话中描述需求即可。 + +请注意:如果你手动添加操作,AI 后续将无法识别或修改它们。 + + 运行脚本操作允许你编写自定义 JavaScript 代码,在安全沙箱环境中运行。当内置操作无法满足你的需求时,例如复杂的数据转换、条件分支逻辑或多步 API 调用,可以使用运行脚本处理。 ## 何时使用运行脚本 vs 内置操作 @@ -207,7 +213,6 @@ try { ## 相关文档 -- [示例脚本](/zh/basic/automation/ai/scripting/sample-scripts) - [HTTP 请求](/zh/basic/automation/actions/logic/http-request) - [AI 生成](/zh/basic/automation/actions/ai/ai-generate) - [循环执行](/zh/basic/automation/actions/logic/loop-run) diff --git a/zh/basic/base.mdx b/zh/basic/base.mdx index b6c08c07..365eabb6 100644 --- a/zh/basic/base.mdx +++ b/zh/basic/base.mdx @@ -8,34 +8,29 @@ description: "创建、管理、导入导出数据库。通过 .tea 文件在 Te 对于不熟悉数据库的用户来说,可以将数据库类比为Excel中的工作簿,每个工作簿可以有多张表。 +## 创建和管理数据库 + ### 添加数据库 1. 进入空间 2. 点击右上角`创建数据库` 添加数据库 -### 重命名数据库 +### 重命名/删除数据库 1. 进入空间 2. 将鼠标悬停在目标数据库上 3. 点击`···`按钮打开菜单 -4. 点击`重命名` - -### 删除数据库 - -1. 进入空间 -2. 鼠标悬浮在目标数据库上 -3. 点击`···`按钮打开菜单 -4. 点击`删除` +4. 点击`重命名`或`删除` 删除数据库 @@ -60,15 +55,17 @@ description: "创建、管理、导入导出数据库。通过 .tea 文件在 Te 如果数据库较大,复制窗口会显示复制进度。请等复制完成后再关闭窗口。记录修改历史和协作者不会被复制。 复制数据库到另一个空间 +## 导入和导出数据库 + ### 导入数据库(数据迁移) `.tea` 文件格式支持导入完整的数据库,包括所有表格、字段、数据和配置。适用于以下场景: -- **数据迁移**:在不同 Teable 实例之间迁移数据库(如从 Cloud 迁移到私有化部署) +- **数据迁移**:在不同 Teable 实例之间迁移数据库(如从 Teable Cloud 迁移到私有化部署) - **备份恢复**:恢复之前导出的数据库 - **模板共享**:与其他团队共享完整的数据库结构 @@ -79,7 +76,7 @@ description: "创建、管理、导入导出数据库。通过 .tea 文件在 Te 4. 上传 `.tea` 文件确认导入 导入数据库 @@ -98,20 +95,17 @@ description: "创建、管理、导入导出数据库。通过 .tea 文件在 Te 7. 导出完成后,在导出窗口中点击 **下载** 保存 `.tea` 文件 导出数据库 - -**数据迁移提示**:要在 Teable 实例之间迁移数据,从源实例导出数据库,然后将 `.tea` 文件导入到目标实例。所有数据和配置都会保留。 - - -跨数据库关联字段会在导出文件中转换为单行文本。 +- 要在 Teable 实例之间迁移数据,从源实例导出数据库,然后将 `.tea` 文件导入到目标实例。所有数据和配置都会保留。 +- 跨数据库关联字段会在导出文件中转换为单行文本。 -### 分享数据库 +## 分享数据库 数据库可以通过公开链接分享。分享范围可以是整个数据库,也可以是当前选中的某个节点。 @@ -120,6 +114,12 @@ description: "创建、管理、导入导出数据库。通过 .tea 文件在 Te 3. 开启 **公开分享到网络** 4. 复制分享链接或二维码 +分享数据库入口 + 分享范围包括: | 范围 | 说明 | @@ -129,9 +129,15 @@ description: "创建、管理、导入导出数据库。通过 .tea 文件在 Te 分享设置中可以配置链接权限、允许查看者复制数据、访问密码,也可以重新生成链接、删除分享链接或复制嵌入配置。 +数据库分享设置 + 如果分享范围中包含应用节点,应用需要先发布后才能通过公开链接访问。 -### 数据库内的功能 +## 数据库内的功能 数据库可包含多个表格,用于组织和管理工作相关的各类信息。 diff --git a/zh/basic/field.mdx b/zh/basic/field.mdx index 5f9a879d..9d8f88d4 100644 --- a/zh/basic/field.mdx +++ b/zh/basic/field.mdx @@ -4,55 +4,79 @@ description: "字段是表格中的列,用来存放不同类型的数据。通 --- {/* mintlify-resync: 2026-05-14 */} -### 添加字段 + +## 字段类型 + +Teable 目前提供以下字段类型: + +| 分类 | 字段类型 | +| --- | --- | +| 基础字段 | [单行文本](/zh/basic/field/single-line-text)、[多行文本](/zh/basic/field/long-text)、[数字](/zh/basic/field/number)、[单选](/zh/basic/field/single-select)、[多选](/zh/basic/field/multiple-select)、[成员](/zh/basic/field/user)、[日期](/zh/basic/field/date)、[评分](/zh/basic/field/rating)、[勾选](/zh/basic/field/checkbox)、[附件](/zh/basic/field/attachment) | +| 高级字段 | [公式](/zh/basic/field/formula)、[关联记录](/zh/basic/field/link)、[查找](/zh/basic/field/lookup)、[汇总](/zh/basic/field/rollup)、[条件查找](/zh/basic/field/conditional-lookup)、[条件汇总](/zh/basic/field/conditional-rollup)、[按钮](/zh/basic/field/button)、[自增数字](/zh/basic/field/auto-number) | +| 系统字段 | [创建时间](/zh/basic/field/created-time)、[修改时间](/zh/basic/field/last-modified-time)、[创建人](/zh/basic/field/created-by)、[修改人](/zh/basic/field/last-modified-by) | + +## 添加字段 在表格视图中,可以按以下步骤操作来添加新的字段: 1. 进入表格视图 2. 将表格滑动至最右侧 -3. 点击字段栏最右侧的`+`号 - ![](/images/2025-11-25-23-17-27.png) -4. 在弹出的对话框内编辑字段属性 -5. 点击`保存` +3. 点击字段栏最右侧的 `+` 号 +添加字段 -### 编辑字段 +4. 在弹出的对话框内编辑字段属性 +5. 点击 `保存` -您可以在创建字段时进行初始配置,也可以随时修改已有字段的设置。 +## 编辑字段 + +可以在创建字段时进行初始配置,也可以随时修改已有字段的设置。 1. 右键单击要编辑的字段 - ![](/images/2025-11-25-21-46-31.png) -2. 在展开的菜单中单击`编辑字段`选项 + +字段菜单操作 + +2. 在展开的菜单中点击 `编辑字段` 3. 在编辑字段对话框中调整字段配置 -4. 点击`保存` +4. 点击 `保存` - 编辑字段类型时可能会触发字段类型转换。您可以将现有字段更改为其他类型,例如将单行文本字段转换为单选字段。 + 编辑字段类型时可能会触发字段类型转换。可以将现有字段更改为其他类型,例如将单行文本字段转换为单选字段。 - 某些类型转换可能会导致数据丢失。例如,将文本字段转换为附件字段时,所有文本内容将无法保留,因为纯文本值无法转换为附件格式。 - - 如果在转换过程中发现数据丢失,您可以使用键盘快捷键 `Ctrl + Z`(Mac: `Command + Z`)撤销转换操作,字段将恢复到转换前的状态,丢失的数据也会被还原。 + - 如果在转换过程中发现数据丢失,可以使用键盘快捷键 `Ctrl + Z`(Mac: `Command + Z`)撤销转换操作,字段将恢复到转换前的状态,丢失的数据也会被还原。 - 关于各种字段类型的详细说明和配置选项,请参阅相应的字段类型文档。 -### 删除字段 +## 删除字段 1. 右键单击目标字段的字段名称 - ![](/images/2025-11-25-23-20-43.png) 2. 在展开的上下文菜单中选择 `删除字段` 选项 3. 在弹出的确认对话框中点击 `确认` 完成删除 +## 隐藏字段 -### 隐藏字段 - -您可以通过字段的右键菜单或视图工具栏来隐藏字段。隐藏后的字段不会在表格视图中显示,但数据依然保留。 +可以通过字段的右键菜单或视图工具栏隐藏字段。隐藏后的字段不会在表格视图中显示,但数据依然保留。 - **方法一**:右键单击字段名称,在菜单中选择 **隐藏字段** -![](/images/2025-11-25-23-24-07.png) - **方法二**:使用视图工具栏中的字段隐藏控制功能 在隐藏字段工具中,点击当前视图中可见的字段名称,表格会滚动到对应列并短暂高亮。需要显示或隐藏字段时,请使用字段旁边的开关。 -![](/images/2025-11-25-23-23-41.png) -有关视图筛选、排序和分组等工具栏能力,请参阅[筛选](/zh/basic/view/toolbar/filter)、[排序](/zh/basic/view/toolbar/sort)和[分组](/zh/basic/view/toolbar/group)文档。 +隐藏字段工具 + +有关视图筛选、排序和分组等工具栏能力,请参阅[视图工具栏](/zh/basic/view/toolbar)文档。 diff --git a/zh/basic/field/advanced/auto-number.mdx b/zh/basic/field/advanced/auto-number.mdx deleted file mode 100644 index bb0c83fc..00000000 --- a/zh/basic/field/advanced/auto-number.mdx +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: "自增数字" -description: "用于在创建新记录时自动生成连续且唯一的序列号。这种字段在需要为每条记录分配一个连续的、不重复的标识符时非常有用。" ---- - -## 一、 创建与配置 - 1. 点击表头右侧的 `+` 图标,在字段类型列表中选择 **自动编号** - 2. 输入字段名称(如“订单编号”、“会员ID”) - 3. 字段创建后,会立即为现有记录及未来新增的记录自动填充序号 - -## 二、 使用场景 - -### 场景一:售后工单追踪 -- **场景**:当客户反馈Bug或咨询问题时,客服人员需要一个简短的数字ID来指代该问题,以便技术人员快速定位 -- **操作步骤**: - 1. 新建“工单序号”字段(当前版本无起始值/格式等可配置项,系统通常从 1 开始自动递增) - 2. 沟通时直接引用该ID(如:“请查看 #45 号工单”),极大提升跨部门沟通效率 - -## 三、 功能特性 - -- **自动递增**:无需人工干预,每增加一条新记录,编号自动 +1 -- **不可篡改**:自动编号属于记录元数据,用户无法手动修改或删除其中的具体数值 -- **持久化**:编号一旦生成即与记录绑定,不会因为排序、筛选或视图改变而发生变化 - ---- - -## 四、注意事项 - -- **删除留空(断号机制)**:自动编号是“只增不减”的。如果删除了编号为 `3` 的记录,系统不会回填该号码,下一条新记录依然会生成为 `4`。这意味着编号序列中可能会出现不连续的“断号”情况,这是为了保证历史数据的准确引用 \ No newline at end of file diff --git a/zh/basic/field/advanced/button-practical-guide.mdx b/zh/basic/field/advanced/button-practical-guide.mdx deleted file mode 100644 index 93c09342..00000000 --- a/zh/basic/field/advanced/button-practical-guide.mdx +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: "按钮字段实践" ---- - -在遇到一些固定的、多节点的流程时,比如销售线索的流转、内容稿件的审批发布、项目任务的催办提醒等。这些流程往往需要我们花时间去手动复制、粘贴、切换应用和发送通知。 - -「按钮」字段正是为解决这一痛点而生。它就像一个安装在每行数据上的“智能遥控器”,让你能一键触发预设好的复杂工作流。 - - -本文将带你搞懂两个问题: -1. **按钮字段有什么用?**—— 解锁它的无限可能。 -2. **按钮字段要怎么用?**—— 手把手配置你的第一个自动化按钮。 - - ---- - -## 一、有什么用法? - -按钮字段的核心价值在于连接与执行。它可以连接表格内部的数据,也能连接外部的系统和服务,并将一系列操作封装成一次点击。 - -### 场景1:线索一键转商机 - -在CRM系统中,当销售人员判断一条线索已足够成熟,需要将其转化为商机进行重点跟进时,只需点击「转为商机」按钮。 - -自动化流程会立即在“商机表”中创建一条新记录,并回填所有关键信息,同时将原线索的状态标记为“已转化”。 -![](/images/2025-08-13-14-58-56.gif) - -### 场景2:稿件一键安排发布 - -稿件审核通过后,编辑点击「安排发布」按钮。 - -系统会自动在“社交媒体排期表”中创建一条待发布记录,并自动发送一封邮件通知负责社交媒体运营的同事:“新稿件《XXX》已进入排期,请及时处理。” -![](/images/2025-08-13-15-11-05.gif) - -### 场景3:任务一键催办 - -项目任务临近截止日期但仍未完成,项目经理点击「催办」按钮。 - -系统会立即通过企业微信/钉钉/飞书/邮件发送一条消息:“【任务催办】您负责的「XXX」任务即将到期,请加快进度!” 这将表格与团队的沟通工具无缝集成。 -![](/images/2025-08-13-15-58-35.png) - ---- - -## 二、要怎么用? - -下面,我们以最经典的“线索一键转商机”为例,详细拆解配置步骤。 - -你需要两张表格: - -**「销售线索表」**和**「商机跟进表」** - -### 步骤一:创建按钮字段 - -在「销售线索表」中,添加一个新字段: -![](/images/2025-08-13-15-51-56.png) -1. **字段类型**:选择「按钮」。 -2. **按钮文字**:输入“转为商机”,并选择一个醒目的颜色,如蓝色。 -3. **点击前需要确认**(可选):如果这一步不适合误触,可以开启确认弹窗,并填写标题、内容和确认按钮文字。 - -### 步骤二:设计自动化流程 - -这是将按钮与具体操作关联起来的核心环节。 - -1. 点击“+ 自定义自动化”,创建一个新流程。 -![](/images/2025-08-13-15-50-51.png) -2. **动作 (Action)**:配置点击按钮后要执行的操作。 -![](/images/2025-08-13-15-55-22.gif) - - **动作1:在“商机跟进表”中新增记录** - - **选择动作类型**:「新增记录」。 - - **目标数据表**:选择「商机跟进表」。 - - **字段映射**:这是最关键的一步,将线索信息传递给新商机。 - > - `商机名称` 字段的值 = 来自触发记录的 `公司名称` 字段。 - > - `关联客户` 字段的值 = 来自触发记录的 `联系人` 字段。 - > - ...(根据需要映射更多字段) - - **动作2:更新当前线索的状态** - - 添加第二个动作,类型为「更新记录」。 - - **目标数据表**:「销售线索表」。 - - **记录ID**:选择“来自触发流程的记录”的ID。 - - **要更新的字段**:将 `状态` 字段的值更新为“已转化”。 - -至此,“线索转商机”流程已配置完毕! - -## 💡 HTTP动作/消息/邮件推送 - -在上述流程的“动作”环节,你还可以添加更多强大的动作: - -#### 发送邮件 - -如果你希望在转化商机后通知销售总监,可以添加一个「发送邮件」动作。在配置中,你可以: -- **收件人**:可以指定邮箱,也可以动态选择某个“成员字段”的值。 -- **主题/正文**:可以插入来自触发记录的动态内容。 - > 例如:“新商机转化提醒:[公司名称] 已由 [负责人] 成功转化为商机。” - - -![](/images/2025-08-13-16-19-43.png) -> 任务催办邮件示例 - -#### HTTP请求 -这是一个进阶能力,用于和任何提供API接口的外部系统通信。例如,你想把转化成功的客户信息同步到另一个独立的软件中。 -![](/images/2025-08-13-16-11-13.png) - ---- - -## 三、进阶功能:用“点击次数限制”实现精准控制 - -在按钮字段的配置中,有两个非常实用的高级选项:“限制点击次数”和“允许重置点击计数”。 - -### 功能描述 -- **限制点击次数**:可以为每一条记录上的按钮设置一个最大可点击的次数。一旦达到上限,该按钮将变为不可点击状态。 -- **允许重置点击计数**:用户可以手动重置这个计数,让按钮恢复可点击状态。 - -### 应用场景:限制单条线索重复转化 - -**为什么要这样做?** - -这个简单的配置是流程严谨性的关键。将最大点击次数设为 `1`,可以确保一条线索只能被转化成一个商机,从根本上杜绝了因误操作产生重复数据的问题。 - -- **最大点击计数**:设置为 `1`。 -- **允许重置点击计数**:保持关闭状态。 - -![](/images/2025-08-13-16-30-47.png) - -通过这些细致的控制,按钮字段不再仅仅是一个触发器,更成为了一个带有业务规则和状态的智能控制器,能适应更多复杂和精细化的管理场景。 diff --git a/zh/basic/field/advanced/button.mdx b/zh/basic/field/advanced/button.mdx deleted file mode 100644 index 028a6f16..00000000 --- a/zh/basic/field/advanced/button.mdx +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: "按钮" ---- - -按钮字段是一个强大的交互式字段,将表格中的每一行数据都变成了一个可操作的单元。用户通过单击按钮,可以即时启动预先配置好的自动化流程,从而实现从简单状态更新到复杂系统集成的各种任务。 - -### **核心功能** - -* **一键触发自动化**:用户在数据条目中点击按钮,即可作为“人工触发器”,启动自动化流程。这为需要人工判断和启动的流程提供了完美的入口。 - -* **自定义按钮外观**:可以自由设定按钮上显示的文本和颜色,使其在视觉上更直观,清晰地传达按钮将执行的操作(如“提交审批”、“发送提醒”、“生成报告”)。 - -### **常用场景** - -按钮字段的应用场景极为广泛,它能将重复性、多步骤的手动操作简化为一次点击。 - -* **状态流转**:在项目管理或任务跟进中,可以设置“开始处理”、“完成任务”、“归档”等按钮,单击即可自动修改该条目中“状态”字段的内容,推动流程前进。 - -* **数据流转**:在客户管理系统(CRM)中,当一条销售线索被有效转化时,可点击“转为商机”按钮。自动化流程会自动将该线索的重要信息新增到“商机表”中。 - -* **通知与沟通**:当需要催办或通知消息,可设置“发送催办/提醒”按钮。点击后,自动化流程可以通过企业微信、钉钉、飞书或邮件发送一条包含本记录链接的定制化消息。 - -* **系统集成与内容生成**:通过自动化中HTTP动作连接外部系统API,点击按钮可以触发连接外部产品。 - -### **如何使用** - -1. **添加与配置**:在表格中新建字段,选择“按钮”类型。 - * **按钮文字与颜色**:自定义按钮上显示的文本(如“发送邮件”)和颜色。 - * **限制点击次数** (可选):开启“限制点击次数”开关,可为每条记录中的按钮设置一个“最大点击计数”(如1次)。您还可以进一步配置是否“允许重置点击计数”。 - * **点击前需要确认** (可选):开启后,可以配置确认弹窗的标题、内容和确认按钮文字,适合先确认再执行的操作。 -2. **配置按钮的自动化**:点击“自定义自动化”,配置一个新的自动化流程。 -3. **配置执行动作**:在自动化流程的“执行动作”部分,设置您希望按钮点击后发生的操作,例如:更新记录、新增记录、发送邮件等。 - -### **注意事项** - -* **计入运行次数**:每次点击按钮并成功触发自动化流程,都将计入您工作空间的自动化流程运行次数。请参考相关文档了解运行次数限制。 -* **点击权限分离**:点击按钮的权限与编辑记录的权限是分离的。**即使用户只有只读权限,甚至是通过对外分享的链接访问,只要能看到按钮,就可以点击并触发流程。** 这使得在审批、投票或外部协作等场景中,可以安全地授予操作权限而无需开放数据编辑权限。 -* **依赖自动化流程**:按钮本身不执行任何操作,它的功能完全依赖于所关联的自动化流程。如果关联的流程被禁用或删除,点击按钮将不会产生任何效果。 diff --git a/zh/basic/field/advanced/conditional-lookup.mdx b/zh/basic/field/advanced/conditional-lookup.mdx deleted file mode 100644 index 99e33aca..00000000 --- a/zh/basic/field/advanced/conditional-lookup.mdx +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: "条件查找" ---- - -## 一、功能简介 - -条件查找是一种跨表数据查询功能,允许您根据设定的筛选条件,从其他表中动态获取符合要求的数据记录,无需预先建立表之间的关联关系。 - -- **灵活筛选**:支持复杂条件组合,精准定位目标数据 -- **动态匹配**:可引用当前表数据值作为筛选条件 -- **结果控制**:支持排序和数量限制,聚焦关键信息 - -## 二、操作流程 - -**步骤1:创建条件查找字段** -1. 点击字段名最右侧的 + 图标 -2. 选择"条件查找"字段类型 -3. 输入字段标题(如"相关订单") - -**步骤2:选择目标数据表** -1. 在"目标表选择"下拉菜单中选择要查询的数据表 -2. 系统将显示该表的字段列表供后续配置 - -**步骤3:配置查找字段** -1. 在"查找字段"中选择要提取的数据字段 -2. 确定返回数据的类型(文本、数字、日期等) - -**步骤4:设置筛选条件** -1. 点击"添加筛选条件" -2. 选择要筛选的字段 -3. 选择条件类型(等于、不等于、包含、大于、小于、包含、不包含等) -4. 设置比较值: - - 静态值:直接输入具体数值 - - 字段引用:选择当前表的字段作为动态值 - -**步骤5:配置排序和限制(可选)** -1. 设置排序字段和排序方式(升序/降序) -2. 设置显示记录数量限制 - -**注:** 筛选条件至少需要配置一个,多个条件可选择"所有条件满足(AND)"或"任一条件满足(OR)"的逻辑关系。 - -## 三、场景实践 - -### 场景1:销售数据周期环比 - -**数据表:** -- 周期销售统计表(包含周期、期初日期、期末日期、销售金额等字段) -- 销售明细表(包含销售金额、销售日期等字段) - -**场景:** -在周期销售统计表中计算每个周期的销售环比增长率。通过条件汇总获取当前周期和上一个周期的销售金额,然后使用公式计算环比值,实现自动化周期对比分析。 - -数据周期环比 - -**操作步骤:** - -**创建条件汇总字段获取当期销售额** -1. 在周期销售统计表中新建条件汇总字段,标题设为"当期销售额" -2. 目标表选择:销售明细表 -3. 汇总字段选择:销售金额 -4. 筛选条件设置: - - 字段:销售日期 → 条件:早于或等于 → 值:当前表的期末日期字段 - - 字段:销售日期 → 条件:晚于或等于 → 值:当前表的期初日期字段 -5. 聚合函数选择:求和 - -**创建条件查找字段获取上期销售额** -1. 新建条件查找字段,标题设为"上期销售额" -2. 目标表选择:周期销售统计表(本表) -3. 字段选择:当期销售额 -4. 筛选条件设置: - - 字段:期末日期 → 条件:等于 → 值:当前表的上期期末日期字段 -5. 聚合函数选择:求和 - -**创建公式字段计算环比** -1. 新建公式字段,标题设为"环比增长率" -2. 公式设置:`(当期销售额 - 上期销售额) / 上期销售额 * 100` -3. 格式设置:百分比,保留2位小数 - - -### 场景2:销售数据产品分析 - -销售数据产品分析 - -**数据表:** -- 产品表(包含品类ID、产品名称、销量等字段) -- 品类表(包含品类ID、品类名称等字段) - -**场景:** -在品类表中查找每个品类下销量最高的产品,便于快速了解各品类的明星产品。 - -**操作步骤:** - -**销量最高产品** -1. 在品类表中新建条件查找字段,标题设为"销量最高产品" -2. 目标表选择:产品表 -3. 查找字段选择:产品名称 -4. 筛选条件设置: - - 字段:品类ID → 条件:等于 → 值:当前表的品类ID字段 -5. 排序设置:销量字段 → 降序 -6. 限制显示:1条记录 - -**销量** -1. 再次新建条件查找字段,标题设为"销量" -2. 目标表选择:产品表 -3. 查找字段选择:销量 -4. 筛选条件设置: - - 字段:品类ID → 条件:等于 → 值:当前表的品类ID字段 -5. 排序设置:销量字段 → 降序 -6. 限制显示:1条记录 - -## 四、常见问题 - - -- **字段类型限制**:某些复杂字段类型(如图片、附件)不支持作为筛选条件 - - - -主要区别在于: -- **关联方式**:普通查找需要预先建立关联字段,条件查找可以动态设置筛选条件 - diff --git a/zh/basic/field/advanced/conditional-rollup.mdx b/zh/basic/field/advanced/conditional-rollup.mdx deleted file mode 100644 index 10d2c0b6..00000000 --- a/zh/basic/field/advanced/conditional-rollup.mdx +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: "条件汇总" ---- - -## 一、功能简介 - -条件汇总是一种跨表数据查询功能,在筛选数据的基础上进行统计计算,返回单个聚合结果值。它允许您根据设定的筛选条件,从其他表中获取符合要求的数据并进行统计分析,无需预先建立表之间的关联关系。 - -- **条件聚合**:只对符合条件的数据进行统计,排除无关数据 -- **多维统计**:支持求和、计数、平均值等多种计算方式 -- **实时更新**:源数据变化时自动重新计算,确保数据准确性 - -## 二、操作流程 - -**步骤1:创建条件汇总字段** -1. 点击字段名最右侧的 + 图标 -2. 选择"条件汇总"字段类型 -3. 输入字段标题(如"总销售额") - -**步骤2:选择目标数据表** -1. 在"目标表选择"下拉菜单中选择要查询的数据表 -2. 系统将显示该表的字段列表供后续配置 - -**步骤3:配置汇总字段** -1. 在"汇总字段"中选择要进行统计计算的数据字段 -2. 确定数据类型(数值、文本、日期等) - -**步骤4:设置筛选条件** -1. 点击"添加筛选条件" -2. 选择要筛选的字段 -3. 选择条件类型(等于、不等于、包含、大于、小于、早于、晚于等) -4. 设置比较值: - - 静态值:直接输入具体数值 - - 字段引用:选择当前表的字段作为动态值 - -**步骤5:选择聚合函数** - -- 根据数据类型选择合适的计算方式:原值、去重、去重计数、求和、计数、平均值、最大值、最小值等计算方式; - -## 三、场景实践 - -### 场景1:团队任务量统计 - -任务量统计 - -**数据表:** -- 任务表 -- 统计表 - -**场景:** -团队管理员需要统计每个员工不同状态的任务数量,包括进行中、已完成等状态的任务量,用于工作负载管理和进度跟踪。 - -**操作步骤:** - -**进行中任务数** -1. 在员工信息表中新建条件汇总字段,标题设为"进行中任务数" -2. 目标表选择:任务分配表 -3. 汇总字段选择:任务ID -4. 筛选条件设置: - - 字段:负责人 → 条件:等于 → 值:当前表的员工字段 - - 字段:任务状态 → 条件:等于 → 值:"进行中" -5. 聚合函数选择:全计数 - -**已完成任务数** -1. 再次新建条件汇总字段,标题设为"已完成任务数" -2. 目标表选择:任务分配表 -3. 汇总字段选择:任务ID -4. 筛选条件设置: - - 字段:负责人 → 条件:等于 → 值:当前表的员工字段 - - 字段:任务状态 → 条件:等于 → 值:"已完成" -5. 聚合函数选择:全计数 - -### 场景2:查找重复值 - -查找重复值 - -**数据表:** -- 客户表(包含客户名称、联系电话等字段) - -**场景:** -在客户表中查找重复的客户名称,识别重复客户记录,用于数据清洗和客户信息管理。 - -**操作步骤:** -1. 在客户表中新建条件汇总字段,标题设为"客户名称重复次数" -2. 目标表选择:客户表(本表) -3. 汇总字段选择:客户名称 -4. 筛选条件设置: - - 字段:客户名称 → 条件:等于 → 值:当前表的客户名称字段 -5. 聚合函数选择:全计数 -6. 新建公式字段,标题设为"重复标记" -7. 公式设置:`IF(客户名称重复次数 > 1, "❗️ 重复", BLANK())` - -**效果:** 客户表中会显示每个客户名称的出现次数,并且在重复记录旁显示"❗️ 重复"标记,便于快速识别和处理重复数据。 - -## 四、常见问题 - - -主要区别在于: -1. **返回结果**:条件汇总返回单个计算值,条件查找返回多个原始值的列表 -2. **用途不同**:条件汇总用于统计分析,条件查找用于查看明细数据 -3. **计算方式**:条件汇总包含聚合计算,条件查找只是数据筛选和提取 - \ No newline at end of file diff --git a/zh/basic/field/advanced/created-by.mdx b/zh/basic/field/advanced/created-by.mdx deleted file mode 100644 index 8c1399da..00000000 --- a/zh/basic/field/advanced/created-by.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: "创建人" -description: "用于自动记录每一条数据记录的创建者信息,无需手动录入,系统会在记录生成的第一时间自动生成操作者身份。" ---- - -## 一、 创建与配置 - -### 1. 添加字段 -- **步骤**: - 1. 点击表头右侧的 `+` 图标,在字段类型列表中选择 **创建人** - 2. 输入字段名称(如“提交人”、“登记人”) - 3. 字段添加后,会自动显示所有记录的初始创建者头像及昵称 - -## 二、 使用场景 - -### 场景一:工作量统计与追溯 -- **场景**:主管需要统计本周每位编辑提交了多少篇文章,或者当文章内容有误时快速找到第一责任人 -- **操作步骤**: - 1. 基于“创建人”字段进行 **分组**,即可直观看到每位成员贡献的记录条数 - 2. 发现数据异常时,直接查看该字段即可锁定数据的初始来源,便于沟通修正 - -## 三、 功能特性 - -- **身份锚定**:精确记录数据生命周期的起点,回答“是谁创建了这条数据”的问题 -- **动态筛选**:支持“当前用户”动态变量,是构建个性化工作台及权限隔离的基础字段 - -## 四、注意事项 - -- **与“最后修改人”的区别**:“创建人”只记录 **第一次** 生成数据的人,后续无论谁修改了单元格内容,该字段都不会变;如果需要追踪数据的最新变动者,请使用 **最后修改人** 字段 -- **数据导入情况**:如果是通过 Excel/CSV 文件批量导入的数据,这些记录的“创建人”通常会被记录为 **执行导入操作** 的那个用户 \ No newline at end of file diff --git a/zh/basic/field/advanced/created-time.mdx b/zh/basic/field/advanced/created-time.mdx deleted file mode 100644 index d134b15b..00000000 --- a/zh/basic/field/advanced/created-time.mdx +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: "创建时间" -description: "用于自动记录每一条数据记录最初生成的精确时间。此字段为用户提供了确切的时间参考,方便了解和追踪数据的生成时间。" ---- - -## 一、 创建与配置 - -- **步骤**: - 1. 点击表头右侧的 `+` 图标,在字段类型列表中选择 **创建时间** - 2. 输入字段名称(如“提交时间”、“登记日期”) - 3. 字段添加后,回自动写入现有记录的创建时间,并对未来新增记录实时生效 - -### 2. 显示格式配置 -用户可以调整以下三个维度的显示方式: -- **日期格式**:定义日期的显示样式,适配不同业务场景的规范 -- **时间格式**: - - **显示时间**:可选择 **12小时制**(如 `03:00 PM`)或 **24小时制**(如 `15:00`) - - **隐藏时间**:如果不需要精确到分秒,可关闭时间显示,仅保留日期 -- **时区设置**:默认跟随当前查看者的系统时区。对于跨国协作团队,可以指定强制使用某一固定时区(如 `GMT+8 北京时间`),确保所有成员看到的时间标准一致,避免沟通误解 - -### 二、 使用场景 - -### 场景一:最新动态优先展示(排序) -- **场景**:客服人员每天面对大量新增反馈,需要优先处理最新提交的问题 -- **操作步骤**: - 1. 点击“创建时间”字段表头 - 2. 选择 **降序** 排列 - 3. 这样最新创建的记录会始终置顶显示,确保信息不遗漏 - -### 场景二:周期性数据统计(筛选) -- **场景**:月底复盘时,需要快速拉取本月新增的所有订单数据,不包含历史旧数据 -- **操作步骤**: - 1. 点击工具栏的 **筛选** 按钮 - 2. 设置条件为:`创建时间` 是 `本月` - 3. 将自动过滤出当月产生的所有记录,便于进行财务结算或业绩统计 - -## 三、 功能特性 - -- **不可篡改**:该字段为 **只读** 属性,任何人无法手动修改时间。 - -## 四、注意事项 - -- **导入数据的处理**:通过 Excel/CSV 导入数据时,新记录的“创建时间”为导入的时间 \ No newline at end of file diff --git a/zh/basic/field/advanced/formula.mdx b/zh/basic/field/advanced/formula.mdx deleted file mode 100644 index 5ebcd3a2..00000000 --- a/zh/basic/field/advanced/formula.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: "公式" -description: "通过在字段中定义公式,开发者和用户能够对数据进行动态计算" ---- - -公式字段允许您执行基于其他字段值的计算。这些计算可以是简单的数学运算,也可以是复杂的字符串操作或逻辑判断。 - -### 数据类型与公式 - -在开始编写公式之前,理解数据类型对于确保您的公式正常工作非常重要。不同的数据类型支持不同的操作和函数。常见的数据类型包括: - -* 数字:整数或小数,支持四则运算。 -* 文本:字符串值,支持连接和部分文本操作。 -* 日期:特定格式的日期,支持日期计算。 -* 布尔值:真(TRUE)或假(FALSE),用于逻辑运算。 - -### 引用字段 - -在公式中,您可以通过字段名称引用其他字段的值。请确保使用正确的字段名称,并注意字段名称对大小写敏感。 - -### 公式编写实践 - -编写公式时,您将会使用运算符、函数以及字段引用。下面是一些实用的公式编写实践: - -#### 使用运算符 - -* **加法** (`+`): 用于计算数值的和或连接字符串。 -* **减法** (`-`): 用于计算数值的差。 -* **乘法** (`*`): 用于计算数值的积。 -* **除法** (`/`): 用于计算数值的商。 -* 取模 (`%`): 用于计算数值的模。 - -#### 应用函数 - -函数是执行特定操作的预定义公式。例如,`SUM` 函数可以计算多个值的总和,而 `LEFT` 函数可以从文本字段中提取一定数量的字符。对于文本处理,您也可以使用 `TEXTBEFORE` 按分隔符提取前半段文本,或使用 `TEXTSPLIT` 按分隔符拆分文本。 - -#### 处理文本 - -在处理文本时,可能需要使用到以下操作: - -* **连接**:使用 `&` 或 `CONCATENATE` 函数将两个或多个文本字符串连接起来。 -* **子串**:使用 `LEFT`、`RIGHT`、`MID` 或 `TEXTBEFORE` 函数来提取字符串的一部分。 -* **拆分文本**:使用 `TEXTSPLIT` 按指定分隔符将文本拆成多个值。 - -#### 逻辑判断 - -使用 `IF` 函数进行逻辑判断可以根据条件返回不同的值。格式如下: - -```js -IF(condition, value_if_true, value_if_false) -``` - -如果需要判断字段是否为空,建议使用 `BLANK()` 进行比较。例如,`IF({重量}=BLANK(), 1, 2)` 会在数字字段为空时返回 `1`,否则返回 `2`。 - -#### 复杂表达式 - -您可能需要编写包含多个操作和函数的复杂表达式。在这种情况下,请确保使用正确的括号来控制操作的顺序。 - -### 格式化和交互展现 - -公式结果也可以继续使用[格式化](/zh/basic/field/common/formatter)和[交互展现](/zh/basic/field/common/show-as)配置,比如显示为百分比、进度条或图标样式。由于结果类型会在你输入公式时被推导出来,可配置项也会随之联动显示。 - -## 调试与优化 - -公式编写正确后,它应该能够无错误地执行并返回预期结果。如果公式不按预期工作,您可能需要进行调试。 - -### 调试建议 - -* **检查数据类型**:确认您的操作和函数使用了正确的数据类型。 -* **验证字段引用**:确保引用的字段名称正确无误。 -* **逐步检查**:将复杂公式拆分成较小的部分,分别测试每个部分。 - -### 性能考虑 - -* **避免冗余计算**:如果同一个计算在多个地方使用,考虑将其结果存储在一个单独的字段中。 -* **限制使用复杂函数**:一些复杂的函数,如那些涉及大量数据操作的函数,可能会影响性能。 diff --git a/zh/basic/field/advanced/formula/grammar.mdx b/zh/basic/field/advanced/formula/grammar.mdx deleted file mode 100644 index adb5bde9..00000000 --- a/zh/basic/field/advanced/formula/grammar.mdx +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: "公式语法" ---- - -### 基础元素 - -在我们的公式语法中,有几种基础元素: - -* **字符串**:这是由单引号或双引号包围的文本,例如 'Hello' 或 "World"。 -* **数字**: - * **整数**:像 123 或 -456 这样的纯数字。 - * **小数**:如 12.34 或 -45.67 这样的带小数点的数字。 -* **布尔值**:这包括 `TRUE` 和 `FALSE`,代表真和假。 -* **字段引用**:用于指代某个特定字段的值。它们必须写成大括号包围的形式,例如 `{age}`,并且字段名需要和实际字段一致。 - -### 操作符 - -公式中的操作符用于连接或比较值: - -* **数学运算**: - * 加法(+) - * 减法(-) - * 乘法(\*) - * 除法(/) - * 取模(%) - -* **比较运算**: - * 大于(>) - * 小于(\<) - * 大于或等于(>=) - * 小于或等于(\<=) - * 等于(=) - * 不等于(!=) -* **逻辑运算**: - * 逻辑与(&&) - * 逻辑或(||) - -### 函数调用 - -你可以在公式中调用函数。一个函数调用由函数名、一对括号和括号内的参数组成。参数之间使用逗号分隔。 - -例如:`sum(1, 2, 3)` 调用了一个名为 `sum` 的函数,并向其传递了三个参数:1、2 和 3。 - -### 其他结构 - -1. **括号**:你可以使用括号来改变运算的优先级,例如 `(1 + 2) * 3`。 -2. **注释**:为了让公式更具可读性或为其他用户提供额外的上下文信息,你可以在公式中添加注释。块注释使用 `/*` 和 `*/` 包围,而行注释则以 `//` 开始。 -3. **空白和空格**:在公式中,空白、换行和注释通常会被忽略,但它们可以帮助提高公式的可读性。 diff --git a/zh/basic/field/advanced/last-modified-by.mdx b/zh/basic/field/advanced/last-modified-by.mdx deleted file mode 100644 index dc2bbf83..00000000 --- a/zh/basic/field/advanced/last-modified-by.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: "修改人" -description: "用于自动记录最后一次对数据行进行编辑的用户身份。为团队提供了一个清晰、准确的跟踪数据更改来源的方式。" ---- - -## 一、 创建与配置 - -- **步骤**: - 1. 点击表头右侧的 `+` 图标,在字段类型列表中选择 **修改人** - 2. 输入字段名称(如“最后编辑者”、“更新人”) - 3. 字段创建后,修改人字段会自动更新,记录当前操作的用户为最后的修改者。 - -## 二、 使用场景 - -### 场景一:协作责任追溯 - 项目经理发现某项任务的状态突然被改为“已取消”,需要确认是哪位成员进行的操作,以便沟通原因 - 1. 直接查看该任务行的“修改人”字段 - 2. 配合 **修改时间** 字段,可以精准定位“谁”在“什么时候”进行了最后一步操作,快速厘清责任或同步信息 - -### 场景二:跟进动态复盘(动态筛选) - 销售人员每天会对多个客户信息进行补充或状态更新,下班前希望检查自己今天所有经手过的客户数据 - 1. 点击工具栏的 **筛选** 按钮 - 2. 设置条件为:`修改人` 是 `当前用户` - ---- - -## 三、 功能特性 - -- **自动更新**:当记录中任何单元格内容发生变化时,系统自动将字段值更新为当前操作用户 -- **只读属性**:该字段不支持手动选择或修改,用户不能手动更改这个字段的值。 -- **基于修改者筛选**:支持根据数据的最后修改者动态筛选内容,帮助团队快速定位特定成员更新的数据 diff --git a/zh/basic/field/advanced/last-modified-time.mdx b/zh/basic/field/advanced/last-modified-time.mdx deleted file mode 100644 index dbc5e197..00000000 --- a/zh/basic/field/advanced/last-modified-time.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: "修改时间" -description: "用于自动记录数据行最后一次被编辑的精确时间。此字段为用户提供了数据变更的时间线索。" ---- - -## 一、 创建与配置 - -### 1. 添加字段 -- **步骤**: - 1. 点击表头右侧的 `+` 图标,在字段类型列表中选择 **修改时间** - 2. 输入字段名称(如“最后更新时间”、“最近维护”) - 3. 字段添加后,会显示每条记录最后一次变动的时间点 - -### 2. 字段追踪配置 -可以配置哪些字段的变更会触发时间更新: -- **追踪所有字段**(默认):记录中任意字段发生修改都会更新时间 -- **指定字段追踪**:只有选定的字段发生变化时才会更新时间 - - **精准追踪**:避免无关改动"干扰"时间记录,让时间更准确地反映重要内容的变更 - - **多字段组合**:可同时选择多个字段(如"标题+状态"),任意一个被修改都会同步更新时间 - -### 3. 显示格式配置 -进入字段配置页面,您可以自定义时间的呈现方式: -- **日期格式**:选择日期的显示样式(如 `2024-01-30` 或 `2024年1月30日`) -- **时间格式**:选择是否显示具体时间(时:分),以及切换 12小时/24小时制 -- **时区设置**:支持指定特定时区,或跟随查看者的系统时区动态调整,确保跨时区协作时的时间认知一致 - -## 二、 使用场景 - -### 场景一:查找最近更新的任务(排序) -晨会时,团队需要快速过一遍昨天下午到今天早上有进展的任务 -- **操作步骤**: - 1. 点击“修改时间”字段表头 - 2. 选择 **降序 (Z -> A)** 排列 - 3. 最近发生变动的记录会自动排在最上方,团队可直接聚焦这些高活跃度任务进行讨论 - -### 场景二:追踪核心内容变更(指定字段追踪) -项目管理中,只想关注任务标题和状态的变化,而不希望负责人调整、优先级微调等操作"干扰"重要变更的时间记录 -- **配置步骤**: - 1. 进入修改时间字段配置 - 2. 选择 **指定字段追踪** - 3. 勾选 "标题" 和 "状态" 字段 -- **效果**:只有当任务的标题或状态发生变化时,修改时间才会更新,让时间记录真正反映任务的实质性进展 - -### 场景三:清理沉睡数据(筛选) -需要找出超过3个月没有任何跟进记录的"死线索",将其释放或重新分配 -- **操作步骤**: - 1. 点击工具栏的 **筛选** 按钮 - 2. 设置条件为:`修改时间` `早于` `90天前` - 3. 系统将过滤出所有长期未被编辑过的记录,便于用户进行批量清理或激活 - -## 三、 功能特性 - -- **自动更新**:每当记录发生更改,此字段都会自动更新为当前的日期和时间 -- **字段追踪**:支持追踪所有字段或只追踪指定字段,让时间记录更精准、更有业务意义 -- **根据修改时间筛选**:用户可以按照最后的修改时间来筛选数据,帮助找到在特定时间段内更新的记录 -- **按修改时间排序**:能够根据最近的更改时间对记录进行排序,方便查找最新或最旧的记录 \ No newline at end of file diff --git a/zh/basic/field/advanced/link.mdx b/zh/basic/field/advanced/link.mdx deleted file mode 100644 index 698d79a8..00000000 --- a/zh/basic/field/advanced/link.mdx +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: "关联" -description: "关联字段是是连接不同数据表的桥梁。允许用户在不同的数据表之间建立关系。通过关联字段,用户可以轻松地在当前表中插入其他表中的记录,并快速查看和跳转至关联的数据表。" ---- - -## 一、 创建与配置 - -通过简单的配置,即可将两张表的数据打通,实现跨表协作。 - -### 1. 新建关联字段 -1. 在 A 表(如“订单表中点击添加字段,选择 **关联** 类型 -2. 在弹出的配置窗口中,选择您希望关联的 B 表(如“客户表”) - -### 2. 选择关联模式(单向/双向) -- **双向关联**:默认开启。系统会在 A 表创建关联字段的同时,自动在 B 表也创建一个对应的关联字段。 - - 在“订单表”关联了“张三”,去“客户表”看“张三”的记录时,也会自动显示关联了哪些“订单”。两边数据实时同步,互为镜像。 -- **单向关联**:关闭双向开关。仅在 A 表显示关联信息,B 表不显示。 - - 只需单方面引用数据,不想干扰被引用表的结构(例如员工表单向关联城市表,城市表无需显示哪些员工住在这里)。 - -### 3. 关联关系及如何建立 - -通过组合配置 **“允许多选”** 和 **“允许重复值”** 两个开关,可以定义四种标准的数据关系模型: - -| 关系模型 | 业务场景示例 | 配置方式 | -| :--- | :--- | :--- | -| **一对一 (1:1)** | **员工 - 档案**
一个员工只能有一份档案,一份档案也只属于一个员工 | ☐ 允许多选
☐ 允许重复值
*(两个开关均关闭)* | -| **一对多 (1:N)** | **部门 - 员工**
一个部门包含多个员工,但一个员工只属于一个部门 | ☑ 允许多选
☐ 允许重复值
*(仅开启允许多选)* | -| **多对一 (N:1)** | **任务 - 项目**
多个任务属于同一个项目,但一个任务只能属于一个项目 | ☐ 允许多选
☑ 允许重复值
*(仅开启允许重复值)* | -| **多对多 (N:N)** | **学生 - 课程**
一个学生选修多门课,一门课也有多个学生上 | ☑ 允许多选
☑ 允许重复值
*(两个开关均开启)* | - -## 二、 使用场景 - -### 场景一:CRM 客户管理(一对多) -- **数据表**:`公司表` + `联系人表` -- **关系**:一家公司可能有多个联系人(CEO、采购经理等),但一个联系人通常只属于一家公司 -- **操作**: - 1. 在 `公司表` 创建关联字段指向 `联系人表` - 2. 开启“允许多选记录”,这样在“字节跳动”这条记录里,可以同时关联“张三”、“李四”两个人 - 3. 系统自动在 `联系人表` 生成“所属公司”字段,自动限制为单选(因为已是一对多),张三只能归属于一个公司 - -### 场景二:项目任务分配(多对一) -- **数据表**:`任务表` + `项目表` -- **关系**:多个细分任务属于同一个大项目 -- **操作**: - 1. 在 `任务表` 创建关联字段指向 `项目表` - 2. 关闭“允许多选记录”,确保每个任务只能归属 1 个项目 - 3. 这样在查看 `项目表` 时,可以看到该项目下挂载的所有任务列表 - ---- - -## 三、 功能特性 - -- **数据一致性**:关联的是记录对象而非简单的文本。如果“客户表”里的“张三”改名为“张三丰”,所有关联了该记录的订单表会自动同步更新名字,无需手动修改 -- **扩展能力**:建立关联是使用 **查找** 和 **汇总** 字段的前提。只有先关联,才能进一步引用对方的电话号码,或汇总对方的消费总金额 - ---- - -## 四、注意事项 - -- **一对多限制**:在严格的“一对多”关系配置下(B表侧关闭多选),一旦 B 表的某条记录(如“身份证号”)被 A 表某条记录关联,它就不能再被 A 表其他记录选择了。这能有效防止数据重复占用(如一个身份证号不能对应两个员工) \ No newline at end of file diff --git a/zh/basic/field/advanced/lookup.mdx b/zh/basic/field/advanced/lookup.mdx deleted file mode 100644 index 82ebc6f5..00000000 --- a/zh/basic/field/advanced/lookup.mdx +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: "查找" -description: "查找字段是建立在关联关系之上的数据引用字段。通过查找,您可以跨表共享数据,且无需重复录入,确保了数据的一致性和完整性。" ---- - -## 一、 创建与配置 - -**前置条件**:在使用查找功能之前,您必须先在两个表之间建立 **关联关系**。 - -### 1. 添加查找字段 -1. 在表格视图中点击 `+` 添加字段,选择 **查找** 类型 -2. **选择关联字段**:会列出当前表中已有的关联字段,基于已有的关联字段,请选择您所需查询的源表及具体字段。(例如:通过“关联作者”去查找) -3. **选择目标字段**:选择您希望从源表中获取哪个字段的数据(例如:获取作者的“出生日期”) - -### 2. 自动同步 -配置完成后,系统会自动根据已有的关联关系,将源表的数据填入当前列。 -- 如果关联记录发生变化(例如换了一个作者),查找的内容会自动更新 -- 如果源表数据发生变化(例如修改了作者的生日),查找的内容也会实时刷新 - -## 二、 使用场景 - -### 场景实践:图书管理系统 -- **数据表**: - 1. **作者详情表**:包含字段 `作者姓名`、`出生日期` - 2. **书籍库表**:包含字段 `书籍名称`、`关联作者`(关联字段) -- **场景**: - 在浏览书籍列表时,希望能直接看到该书作者的出生日期,而不需要点进作者详情页查看,也不希望手动把日期再抄写一遍 -- **操作步骤**: - 1. 在 **书籍库表** 中,确保 `关联作者` 字段已正确关联了对应的作者(如《代码大全》关联了 "Steve McConnell") - 2. 新建 **查找** 字段,命名为 `作者生日` - 3. 配置:通过 `关联作者` 字段,去查找作者详情表中的 `出生日期` 字段 - 4. **结果**:《代码大全》这一行会自动显示 "1960" - ---- - -## 三、 功能特性 - -- **格式继承**:查找字段的数据类型、格式化(如日期格式、数字精度)和交互展现(如URL点击跳转)均**完全继承自源字段**。 - - 例如:查找的是一个“日期”字段,那么查找字段也就具备日期的特性;查找的是“数字”,它就可以参与数字计算 -- **公式联动**:查找字段获取到的数据可以直接被 **公式** 引用。 - - 例如:查找到了 `商品单价`,可以在当前表用公式计算 `单价 * 数量 = 总价` - ---- - -## 四、 注意事项 - -- **只读属性**:查找字段是 **只读** 的,您无法在当前表中修改它。如果需要修改数据,请回到源表中编辑原始字段 -- **单值与多值(重点)**: - - 如果关联关系是 **一对一**,查找结果就是单一值(如:1960) - - 如果关联关系是 **一对多**(例如一本书关联了两个作者),查找结果会自动变成 **多值数组**(如:1960, 1963),以逗号分隔显示。 -- **数据依赖**:查找字段的存在依赖于关联字段和源字段。如果删除了关联字段,或源表中的目标字段被删除,查找字段将失效 \ No newline at end of file diff --git a/zh/basic/field/advanced/rollup.mdx b/zh/basic/field/advanced/rollup.mdx deleted file mode 100644 index 6f4e477f..00000000 --- a/zh/basic/field/advanced/rollup.mdx +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: "汇总" -description: "汇总字段用于对关联表中的多条数据进行聚合计算。基于关联的记录,汇总对方表中的数据,并进行求和、计数、平均值、最大/最小值等统计操作,常用于订单总额计算、任务进度统计等场景。" ---- - -{/* mintlify-resync: 2026-05-14 */} -## 一、 创建与配置 - -**前置条件**:与查找字段类似,创建汇总字段前必须先建立 **关联关系**。 - -### 1. 新建汇总字段 -1. 点击表头 `+` 添加字段,选择 **汇总** 类型 -2. **选择关联字段**:指定数据来源的链路 -3. **选择目标字段**:指定要对哪个字段进行计算 -4. **选择汇总函数**:指定具体的计算逻辑 - -### 2. 格式与展现 -汇总后的结果(通常是数字)支持进一步的格式化处理: -- **格式化**:设置小数精度、添加货币符号(如 `$100.00`)或设置为百分比 -- **交互展现**:将计算出的数值配置为进度条或环状图,增强可视化效果 - -## 二、 使用场景 - -### 场景实践:书店订单结算 -- **数据表**: - 1. **书籍库表**:包含字段 `书名`、`价格` - 2. **订单表**:包含字段 `订单号`、`所选书籍`(关联字段,允许多选) -- **场景**: - 一个订单中可能包含多本书,系统需要自动计算出该订单的总金额,无需人工按计算器 -- **操作步骤**: - 1. 在 **订单表** 中,确保 `所选书籍` 字段关联了多本具体的书(如订单001关联了《代码大全》`$60` 和 《设计模式》`$40`) - 2. 新建 **汇总** 字段,命名为 `订单总额` - 3. 配置逻辑:通过 `所选书籍` 关联,选择目标字段 `价格`,统计函数选择 `求和` - 4. **结果**:订单001 的总额会自动显示为 `$100` - -## 三、 功能特性 - -### 支持的统计函数 - -| 公式名 | 解释 | -| -------------- | -------------------------- | -| COUNTALL | 计算所有值,包括文本和空值 | -| COUNTA | 计算非空值的数量 | -| COUNT | 计算数值项的数量 | -| SUM | 计算所有数值的总和 | -| MAX | 返回所有数值中的最大值 | -| MIN | 返回所有数值中的最小值 | -| AND | 如果所有值都为真,则返回真 | -| OR | 如果任何值为真,则返回真 | -| XOR | 如果奇数个值为真,则返回真 | -| ARRAY\_JOIN | 将数组中的所有值连接成一个字符串 | -| ARRAY\_UNIQUE | 从数组中删除重复的值,并返回一个仅包含唯一值的新数组 | -| ARRAY\_COMPACT | 从数组中删除所有空值,并返回一个新数组 | -| CONCATENATE | 将多个值连接成一个字符串 | - -## 四、 注意事项 - -- **动态更新**:汇总字段的结果是实时计算的。如果修改了源数据(如调整了书的价格)或改变了关联关系(如删减了订单里的书),汇总结果会自动刷新 -- **数据类型限制**:某些函数仅对特定类型生效。例如 `求和`只能用于数字字段,如果您选择了一个文本字段,系统将不会提供求和选项 -- **性能提示**:大量的汇总操作可能会影响性能,特别是当涉及到的数据记录非常多时。系统会尽可能的提供最快的计算速度,建议合理规划关联结构,适时地优化和审查你的汇总设置。 diff --git a/zh/basic/field/advanced/user.mdx b/zh/basic/field/advanced/user.mdx deleted file mode 100644 index 2de6452c..00000000 --- a/zh/basic/field/advanced/user.mdx +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "成员" -description: "成员字段允许用户指定、识别和分类项目中的参与者。常用于标识任务负责人、项目参与者或审批人。通过利用成员字段,您可以轻松地管理和区分与特定项目或任务相关的人员。" ---- - -## 一、 创建与配置 - -### 1. 新建成员字段 -1. 点击表头 `+` 添加字段,选择 **成员** 类型 -2. 输入字段名称(如“负责人”、“执行者”) -3. **允许多选**: - - **开启**:一条记录可以选择多个用户(适用于“协作任务”) - - **关闭**:一条记录只能选择一个用户(适用于“责任到人”的明确分工) -4. **用户被选择后发送通知**: - - **开启**:当用户被选中时,会收到通知 - - **关闭**:当用户被选中时,不会收到任何通知 - -#### 多选配置影响 - -**开启"允许多选"**:一条任务可分配给多人,适合协作任务 - -**关闭"允许多选"**:一条任务只能分配给一人,责任明确 - -## 二、 使用场景 - -### 场景一:任务分配与看板管理 -- **需求**:项目经理需要将任务分配给团队成员,并希望能直观看到每个人手头有多少活 -- **操作**: - 1. 新建“负责人”字段(建议关闭多选) - 2. 创建 **看板视图**,将分组维度设置为“负责人” - 3. **效果**:所有任务按人头排列成列。拖拽卡片到某人列下,即可直接变更该任务的负责人 - -### 场景二:打造“我的工作台”(动态筛选) -- **需求**:团队成员每天登录系统,只想看属于自己的待办事项,不被他人数据干扰 -- **操作**: - 1. 在表格或看板视图中,点击 **筛选** - 2. 设置条件:`负责人` `是` `当前登录用户` - 3. **效果**:张三登录只看到张三的任务,李四登录只看到李四的任务。只需配置一个视图,全员通用 - -## 三、 功能特性 - -- **消息通知**:在开启用户被选择后发送通知,被选中的用户会收到通知 - -## 四、 注意事项 - -- **多选与分组**:如果开启了“允许多选”,在进行分组或看板视图展示时,一条记录可能会出现在多个分组中(例如任务同时分给A和B,那么A的列和B的列下都会显示这条任务) \ No newline at end of file diff --git a/zh/basic/field/ai/ai-field.mdx b/zh/basic/field/ai/ai-field.mdx index aaf726c8..9567dd77 100644 --- a/zh/basic/field/ai/ai-field.mdx +++ b/zh/basic/field/ai/ai-field.mdx @@ -7,134 +7,144 @@ description: "AI 字段可以直接帮你整理文本、分类标签、生成评 ## 主要用途 -AI 字段适合把原始内容直接变成可用结果。常见场景包括: - -- 把一段文字整理成摘要 -- 把内容翻译成另一种语言 -- 从文本里提取关键信息 -- 把内容改写得更简洁或更专业 -- 自动给单选字段分类,给多选字段打标签 -- 给评分字段打分,或者把图片相关内容生成成新图片 +AI 字段会根据同一行里的其他字段内容生成当前字段值。它适合把原始内容整理成摘要、翻译、提取结果、分类标签、评分、日期或图片。 + + + + 总结、翻译、提取信息、文案改写、自定义生成。适合把长文本整理成可直接使用的文字结果。 + + + 智能分类、自定义生成。适合把内容匹配到一个已有分类。 + + + 智能标签、自定义生成。适合为内容匹配一个或多个已有标签。 + + + 评分、自定义生成。适合根据内容生成分数或数值结果。 + + + 提取信息、自定义生成。适合从内容中提取日期或时间。 + + + 图像生成、自定义生成。适合根据文字或附件生成图片。 + + + +如果不确定该选哪种动作,可以先看下面的说明: + + + + - **总结**:根据来源字段生成摘要。 + - **翻译**:将来源字段翻译成目标语言。 + - **提取信息**:从文本中提取指定信息,日期字段也可以用它提取日期或时间。 + + + - **文案改写**:根据附加要求调整表达方式。 + - **智能分类**:为单选字段匹配已有选项。 + - **智能标签**:为多选字段匹配已有选项。 + + + - **评分**:根据来源内容生成评分或数值。 + - **图像生成**:会在附件字段中生成图片,部分模型支持选择附件字段作为参考图。 + + + 用自定义提示词控制输出,适合默认动作无法覆盖的场景。自定义提示可以引用同一行里的字段。 + + ## 操作流程 -### 1. 新增字段 - -- 先设置字段名称和字段类型。 -- 再进入 AI 配置,选择适合这个字段的 AI 动作。 -- 根据需要补充来源字段、提示词和自动更新设置。 + + + 创建字段时,先选择字段类型,再展开 **AI 配置**。不同字段类型会显示不同的 AI 动作。 + + + 选择 **AI 动作类型** 和 **AI 模型**。动作决定要执行的任务,模型决定使用哪一个 AI 模型生成结果。 + + + 选择 AI 要读取哪一列作为输入。AI 字段会根据同一行里的来源字段内容生成当前字段值。 + + + 根据动作填写 **附加要求**、**目标语言** 或 **自定义提示**。附件字段生成图片时,可以使用 **高级设置** 调整图片尺寸、质量、数量、宽高比、分辨率或参考图,具体选项取决于所选模型。 + + 新增 AI 字段 -- 文本字段常用动作 - - 总结 - - 翻译 - - 提取信息 - - 文案改写 - - 自定义生成 -- 单选字段常用动作 - - 智能分类 - - 自定义生成 -- 多选字段常用动作 - - 智能标签 - - 自定义生成 -- 评分字段常用动作 - - 评分 - - 自定义生成 -- 日期字段常用动作 - - 提取信息 - - 自定义生成 -- 附件字段常用动作 - - 生成图片 +编辑 AI 字段时,可以修改动作类型、模型、来源字段、附加要求、自定义提示和自动更新。保存后,新配置会用于之后的生成;如果已有结果不符合预期,可以重新生成。 编辑 AI 字段 -### 2. 编辑字段 +## 自动更新和批量生成 -- 选择来源字段。 -- 添加附加要求。 -- 选择 AI 模型。 -- 自动更新 - - 开启后,来源内容变化时,字段结果也会跟着更新。 +开启 **自动更新** 后,当来源字段内容或 AI 配置变化时,AI 字段会按当前配置同步更新。它适合需要持续保持结果一致的场景,比如根据反馈内容更新分类、摘要、评分或标签。 - +保存新增字段或修改后的 AI 配置时,可以选择是否立刻处理当前视图里的记录: -点击保存后,AI 字段就可以开始使用,如图所示。 + + + 只为没有结果的单元格生成内容,不覆盖已有内容。 + + + 为当前视图里的记录重新生成结果,会覆盖已有内容。 + + + 只保存字段配置,不立即写入单元格。 + + AI 字段保存选项 -如果对输出结果不满意,可以重新生成内容。 +选择生成方式后,Teable 会显示当前任务状态。 AI 字段生成状态 -#### 批量快捷操作: - -右键菜单里的“更新整列记录”可以一次更新整列,是否可用取决于当前视图和权限。 - -## 动作说明 - -### 总结 - -根据来源字段和附加要求,对内容做摘要。 - -### 翻译 +如果之后还需要重新生成,可以直接从字段菜单操作,不需要再次保存配置。 -根据来源字段和附加要求,对内容进行翻译。 - -### 提取信息 - -根据来源字段和附加要求,从内容中提取指定信息。 - - 如果需要上传图片或者文件,注意将指定字段类型修改成附件类型。 - -### 文案改写 - -根据来源字段和附加要求,改写文案表达。 - -### 智能分类 - -- 单选字段可以用智能分类。 -- 多选字段可以用智能标签。 -- 这两种方式都适合把内容快速整理成可浏览、可筛选的标签结果。 +右键菜单里的 **生成** 可以按当前视图批量生成。是否可用取决于当前视图和权限。 AI 字段生成菜单 -### 自定义生成 +## 常见问题 -可以结合多个字段,自定义提示词,生成你想要的结果。 + + + 创建字段或修改 AI 配置后,保存时可以选择 **仅填充空单元格**、**整列生成** 或 **仅保存配置**。如果之后再想批量生成,可以从字段右键菜单里点击 **生成**。 + - + + 如果希望来源字段内容变化后,AI 字段也跟着更新,就开启 **自动更新**。如果只想手动控制生成时机,可以关闭它,之后需要时再使用 **生成**。 + - 除了 Teable 官方提供的模型,Teable 也支持[使用第三方模型 API](/zh/basic/ai/custom-model),可以在空间设置里配置。 + + AI 动作会根据字段类型显示。比如文本字段适合总结、翻译和提取信息;单选字段适合智能分类;多选字段适合智能标签;附件字段适合图像生成。 + -### 生成图片 + + 模型列表来自 Teable 提供的模型,或当前空间自己配置的 AI 模型。如果需要使用第三方模型,请先在空间设置中添加自定义 AI 模型。 + -附件字段可以使用 **生成图片**,根据文本字段、附件字段,或两者组合生成图片。 + + 图像尺寸、质量、数量、宽高比、分辨率和参考图等选项,会根据所选模型变化。 + + diff --git a/zh/basic/field/attachment.mdx b/zh/basic/field/attachment.mdx new file mode 100644 index 00000000..12165a37 --- /dev/null +++ b/zh/basic/field/attachment.mdx @@ -0,0 +1,79 @@ +--- +title: "附件" +description: "用于在记录中保存图片、PDF、文档和其他文件,支持预览、下载和批量下载。" +--- + +{/* mintlify-resync: 2026-05-14 */} +附件字段用于在记录中保存一个或多个文件。常见场景包括上传合同、图片、发票、设计稿、简历、报告,或者保存 AI 字段生成的图片。 + +## 适用场景 + +| 场景 | 适合内容 | +| --- | --- | +| 文件归档 | 合同、发票、报告、简历等业务文件 | +| 图片和素材管理 | 产品图片、活动素材、设计稿、截图 | +| 表单收集资料 | 应聘简历、报销凭证、客户提交的文件 | +| AI 图片输出 | AI 字段生成的图片结果 | + +## 创建和设置 + + + + 在表格中点击 `+` 添加字段,选择字段类型 **附件**。 + + + 输入字段名称,比如“文件”、“图片”或“合同附件”。 + + + 点击 `保存` 后,每条记录都可以在该字段中上传一个或多个附件。 + + + +## 使用附件字段 + +### 上传和查看 + +附件字段可以保存图片、PDF、文档、压缩包等文件。 + +- **上传文件**:在单元格或记录详情中点击附件区域,选择本地文件上传。 +- **保存多个附件**:同一个附件单元格可以包含多个文件。 +- **预览文件**:图片和部分文件类型可以直接在单元格或记录详情中预览。 +- **下载单个附件**:打开附件后,可以下载对应文件。 + + +附件字段保存的是文件,不是普通文本。将文本类字段转换为附件字段时,原文本内容无法自动转换为文件。字段转换前请先确认数据是否需要备份。 + + +### 批量下载附件 + +在附件字段的字段菜单中,可以把当前字段里的附件批量下载为 ZIP 文件。下载范围会跟随当前表格的搜索结果: + +- 如果当前没有搜索条件,会下载该附件字段中可下载的附件。 +- 如果当前表格正在搜索并隐藏不匹配的行,只会下载匹配记录中的附件。 + +下载 ZIP 时,可以选择附件名前缀: + +| 前缀方式 | 说明 | +| --- | --- | +| **默认序号** | 使用系统生成的序号作为前缀,便于区分文件顺序 | +| **选择字段作为前缀** | 使用某个字段值作为文件名前缀,适合按编号、客户名或项目名整理附件 | +| **无前缀** | 尽量保留原始文件名 | + +如果 ZIP 中出现重名文件,Teable 会自动追加后缀,保证文件名唯一。 + +## 扩展使用 + +### 与 AI 字段配合使用 + +AI 字段可以读取附件,也可以把生成的图片写入附件字段。 + +- **读取附件**:在 AI 字段设置中,把附件字段添加为输入字段。是否能识别图片或文件内容,取决于所选模型。 +- **保存图片**:把 AI 字段的输出设置为附件字段,生成的图片会保存到该附件字段中。 + +更多信息请参阅 [AI 字段](/zh/basic/field/ai/ai-field)。 + +### 通过 API 上传附件 + +附件上传 API 支持上传本地文件,也支持通过 URL 上传文件。新附件会追加到指定记录的附件字段末尾。 + +请参阅 [上传附件 API](/zh/api-doc/record/upload-attachment)。 diff --git a/zh/basic/field/auto-number.mdx b/zh/basic/field/auto-number.mdx new file mode 100644 index 00000000..0a1980e3 --- /dev/null +++ b/zh/basic/field/auto-number.mdx @@ -0,0 +1,39 @@ +--- +title: "自增数字" +description: "用于在创建记录时自动生成递增序号,适合做工单号、订单序号和内部编号。" +--- + +自增数字字段会为每条记录自动生成一个递增序号。字段创建后,现有记录和之后新增的记录都会自动填入编号,用户不需要手动维护。 + +## 适用场景 + +| 场景 | 适合内容 | +| --- | --- | +| 工单序号 | 为问题、反馈或售后请求生成简短编号 | +| 订单和合同序号 | 为订单、合同、申请记录生成内部序号 | +| 成员或候选人编号 | 为会员、候选人、员工生成基础编号 | +| 沟通引用 | 在消息或评论中引用 `#45` 这类编号,便于定位记录 | + +## 创建和设置 + + + + 点击表头右侧的 `+` 图标,在字段类型列表中选择 **自动编号**。 + + + 输入字段名称,比如“订单编号”、“会员 ID”或“工单序号”。 + + + 字段创建后,会立即为现有记录和未来新增记录自动填充序号。 + + + +## 字段特性 + +- **自动递增**:每增加一条新记录,编号自动增加。 +- **不可手动修改**:自动编号属于记录元数据,用户无法手动修改具体数值。 +- **不会随视图变化**:编号生成后与记录绑定,不会因为排序、筛选或视图变化而改变。 + +## 注意事项 + +- 自动编号只增不减。如果删除编号为 `3` 的记录,系统不会回填这个号码,下一条新记录仍会继续生成后续编号。编号中可能出现断号,这是为了保证历史记录引用稳定。 diff --git a/zh/basic/field/basic/attachment.mdx b/zh/basic/field/basic/attachment.mdx deleted file mode 100644 index 5196f876..00000000 --- a/zh/basic/field/basic/attachment.mdx +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: "附件" -description: "用于在记录中保存图片、PDF、文档和其他文件,支持预览、下载和批量下载。" ---- - -{/* mintlify-resync: 2026-05-14 */} -**附件**字段用于在单元格中保存一个或多个文件。常见场景包括上传合同、图片、发票、设计稿、简历、报告或由 AI 字段生成的图片。 - -## 一、 创建附件字段 - -1. 在表格中点击 `+` 添加字段 -2. 选择字段类型 **附件** -3. 输入字段名称,例如“文件”“图片”“合同附件” -4. 点击 `保存` - -创建后,每条记录都可以在该字段中上传一个或多个附件。 - -## 二、 上传和查看附件 - -附件字段可以保存多种文件类型,例如图片、PDF、文档和压缩包。 - -- **上传文件**:在单元格或记录详情中点击附件区域,选择本地文件上传。 -- **保存多个附件**:同一个附件单元格可以包含多个文件。 -- **预览文件**:图片和部分文件类型可以直接在单元格或记录详情中预览。 -- **下载单个附件**:打开附件后,可以下载对应文件。 - - -附件字段保存的是文件,不是普通文本。将文本类字段转换为附件字段时,原文本内容无法自动转换为文件。字段转换前请先确认数据是否需要备份。 - - -## 三、 批量下载附件 - -在附件字段的字段菜单中,可以批量下载当前字段里的附件。 - -批量下载会生成一个 ZIP 文件,并遵循当前表格的搜索结果范围: - -- 如果当前没有搜索条件,会下载该附件字段中可下载的附件。 -- 如果当前表格正在搜索并隐藏不匹配的行,只会下载匹配记录中的附件。 - -下载 ZIP 时,可以选择附件名前缀: - -| 前缀方式 | 说明 | -|------|------| -| **默认序号** | 使用系统生成的序号作为前缀,便于区分文件顺序 | -| **选择字段作为前缀** | 使用某个字段的值作为文件名前缀,适合按编号、客户名或项目名整理附件 | -| **无前缀** | 尽量保留原始文件名 | - -如果 ZIP 中出现重名文件,Teable 会自动追加后缀,保证文件名唯一。 - -## 四、 与 AI 字段配合使用 - -AI 字段可以读取附件,也可以把生成的图片保存到附件字段。 - -- **读取附件**:在 AI 字段设置中,把附件字段添加为输入字段。是否能识别图片或文件内容,取决于所选模型。 -- **保存图片**:把 AI 字段的输出设置为附件字段,生成的图片会保存到该附件字段中。 - -更多信息请参阅 [AI 字段](/zh/basic/field/ai/ai-field)。 - -## 五、 通过 API 上传附件 - -附件上传 API 支持上传本地文件或通过 URL 上传文件,并将新附件追加到指定记录的附件字段末尾。 - -请参阅 [上传附件 API](/zh/api-doc/record/upload-attachment)。 diff --git a/zh/basic/field/basic/checkbox.mdx b/zh/basic/field/basic/checkbox.mdx deleted file mode 100644 index 59bd8c91..00000000 --- a/zh/basic/field/basic/checkbox.mdx +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: "勾选" -description: "用于标记“是/否”、“完成/未完成”等二元状态的字段类型。" ---- - -**勾选** 字段主要用于记录状态,用户只需点击即可在"选中"和"未选中"两种状态间切换。勾选字段非常适合用于表示"是/否"、"开/关"或"已完成/待处理"等的二元状态。 - -## 一、 创建与配置 - -1. 点击表格列标题右侧的 `+` 号 -2. 在字段类型列表中选择 **"勾选"** -3. **设置默认值**(可选): - - 您可以指定该字段在创建新记录时,默认是"选中"还是"未选中"状态 -4. 点击"保存" - -## 二、 使用场景 - -### 1. 任务状态管理 -这是最经典的用法。在任务管理表中,用勾选字段代表"是否完成" -- **配合视图**:您可以创建一个"未完成任务"视图,筛选条件设为 `勾选字段` 是 `未选中`,以此来专注剩余工作 - -### 2. 快速标记 -用于给记录打上某种特定属性的标签,例如: -- **客户表**:标记"是否 VIP"、"是否已黑名单" -- **库存表**:标记"是否急需补货" -- **招聘表**:标记"简历已筛选" - -### 3. 流程确认 -在涉及协作的流程中,作为简易的"确认钮" -- 例如在内容排期表中,设置"图片已上传"、"文案已校对"等字段,流程流转更清晰 - -## 三、 功能特性 - -### 1. 在公式中 -**示例:** -如果您想根据勾选状态输出不同的文本,可以使用 `IF` 函数: -``` -IF({是否完成}, "✅ 已搞定", "🚧 进行中") -``` - -### 2. 快速统计完成率 -您可以在底部的统计栏中直接查看: -- **求和**:等于已勾选的总数 -- **百分比**:配合计数,可以快速算出完成率(例如:10个任务里勾了8个,完成率80%) - -### 3. 作为自动化的触发器 -勾选字段非常适合作为自动化的"开关"。 -- **场景**:当"审核通过"被勾选时,自动发送邮件通知客户 -- **设置**:触发器选择"当记录更新时",监控字段选择该勾选字段 \ No newline at end of file diff --git a/zh/basic/field/basic/date.mdx b/zh/basic/field/basic/date.mdx deleted file mode 100644 index a7d63816..00000000 --- a/zh/basic/field/basic/date.mdx +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: "日期" -description: "用于记录日期和时间,支持日期格式、时间格式、时区和自动填入当前时间。" ---- - -**日期**字段用于存储特定的时间点信息。无论是项目截止日、会议时间还是员工入职日期,都适合使用这个字段。它也可以精确到分钟显示,例如 `2025-11-03 14:30`。 - -## 一、 创建与配置 - -### 添加日期字段 - -1. 在表格视图中,点击“添加字段” -2. 为字段命名,并从下拉菜单中选择“日期”作为字段类型 - -### 日期字段选项 - -- **包含时间**:除了日期,您还可以选择添加具体的时间 -- **时区选择**:为您的日期和时间选择一个特定的时区(默认为当前时区),这在处理国际业务或团队协作时尤为重要 -- **格式化选项**:日期字段提供了多种格式化选项以适应不同的需求。例如: - - `YYYY-MM-DD` (例如: 2023-11-03) - - `DD/MM/YYYY` (例如: 03/11/2023) - - `MM/DD/YYYY` (例如: 11/03/2023) - - `D MMM YYYY` (例如: 3 Nov 2023) - - ...及其[他多种格式选项](/zh/basic/field/common/formatter) - -## 二、 使用场景 - -- **项目管理**:为任务设置明确的开始和结束日期,使项目按计划进行 -- **活动规划**:记录即将到来的事件和会议的日期和时间,确保没有遗漏 -- **时间线分析**:对时间序列数据进行排序和分析,比如销售趋势或用户活跃度 -- **搭配公式字段**:使用日期字段与公式字段结合,可以帮助您计算日期间隔、预测未来日期等 - -## 三、 功能特性 - -- **自动填入当前时间**:开启后,新记录会自动带上当前时间 - - -**提示**: -如果您需要记录"这条数据是什么时候创建的"且**不允许修改**,请不要使用"日期"字段,而应该使用 **[创建时间](/zh/basic/field/advanced/created-time)** 字段。 - diff --git a/zh/basic/field/basic/long-text.mdx b/zh/basic/field/basic/long-text.mdx deleted file mode 100644 index 0844e81d..00000000 --- a/zh/basic/field/basic/long-text.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: "多行文本" -description: "用于存储需要换行的长文本,支持普通文本和 Markdown 两种显示方式。" ---- - -**多行文本**字段用于存储篇幅较长、包含多个段落的文字内容。它很适合记录备注、说明、日志和详细描述。 - -与单行文本不同,它允许用户通过换行来组织内容结构,也可以切换成 Markdown 显示,让内容更好读。 - -## 一、 创建与配置 - -### 创建多行文本字段 - -- **步骤**: - 1. 在表格中点击 `+` - 2. 选择字段类型 **多行文本** - 3. 输入字段名称(如“描述”、“备注”、“详情”等) - 4. 根据需要设置字段属性 - 5. 点击 `保存` - -### 字段配置选项 - -- **默认值**:可设置默认文本内容,新记录会自动填充 -- **显示方式**:可以在普通文本和 Markdown 之间切换 -- **字段描述**:为字段添加说明文字,帮助团队理解字段用途 - -## 二、 使用场景 - -- **详细描述**:如任务详情、产品功能介绍、Bug 复现步骤 -- **记录日志**:如客户跟进记录、每日工作总结、会议纪要 -- **备注信息**:存储无法拆分为独立字段的补充性说明 - -## 三、 功能特性 - -### 换行操作 -- **手动换行**:在编辑模式下,按下 `Shift + 回车` 键即可插入换行符 -- **自动换行**:单元格高度会根据列宽自动调整,将长文本折行显示以便阅读 -- **Markdown**:可用 Markdown 方式显示内容,适合标题、列表和链接 - -多行文本 - -## 四、 注意事项 - -- 多行文本不支持 URL、Email 和电话这类交互展现,只支持普通文本和 Markdown diff --git a/zh/basic/field/basic/multiple-select.mdx b/zh/basic/field/basic/multiple-select.mdx deleted file mode 100644 index 23f3ed99..00000000 --- a/zh/basic/field/basic/multiple-select.mdx +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: "多选" -description: "用于从预设选项列表中选择一个或多个值,常用于标签、分类和多维度筛选。" ---- - -## 一、 创建与配置 - -1. **添加选项** - - 在配置界面输入选项名称,按下 **回车键** 即可快速添加 - - 系统会自动分配颜色,也可以手动调整 - - 拖拽选项左侧的图标可调整排序 - -2. **默认值和编辑规则** - - 可以设置默认值,让新记录一开始就带上常用标签 - - 可以控制编辑时是否允许直接新增选项;关闭后,只能使用已有选项 - -3. **颜色管理(可选)** - - 点击选项名称左侧的圆点,可从预设色板中选择颜色 - - 合理的颜色区分有助于在看板或日历视图中快速识别数据类别 - -## 二、 应用场景 - -* **标签或关键字**:例如,如果您正在跟踪内容项目,一个文章或视频可能涉及多个主题,如“技术”、“设计”和“市场”。 -* **技能或能力**:在人员数据库中,每个人可能具有多个技能,如“编程”、“项目管理”和“公关”。 -* **项目涉及的部门**:当一个项目跨越多个部门时,如“销售”、“研发”和“财务”。 - -## 三、 功能特性 - -- **灵活筛选**:多选字段支持丰富的筛选逻辑,例如: - - **包含任一**:只要选中了“技术”标签的记录都显示 - - **包含所有**:必须同时选中“技术”和“设计”的记录才显示 - - **完全等于**:选项必须完全匹配,不能多也不能少 -- **与单选的区别**:单选字段限制每条记录只能选择 **1** 个值,而多选字段允许选择 **1 到 N** 个值 -- **可视化**:为每个选项分配不同的颜色,可以快速地在表格中识别和分类记录 -- **默认值**:可以给新记录预设一组常用标签,减少重复选择 diff --git a/zh/basic/field/basic/number.mdx b/zh/basic/field/basic/number.mdx deleted file mode 100644 index be064e11..00000000 --- a/zh/basic/field/basic/number.mdx +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: "数字" -description: "用于录入和存储数值型数据,如价格、库存、数量和比例。可以设置小数位、货币符号、百分比和图形展示。" ---- - -数字字段不仅仅是简单的数字记录,还可以直接用于统计和展示。 - -## 一、 创建与配置 - -### 创建数字字段 - -- **步骤**: - 1. 点击表格视图表头右侧的 `+`,在字段类型列表中选择 **数字** - 2. 输入字段名称(如“商品价格”、“库存数量”) - 3. **格式设置**:根据业务需求选择数据的显示类型 - - **数字**:纯数值显示,适用于普通计数(如:100、2.5) - - **货币**:自动添加货币符号,适用于金额统计(如:¥100.00) - - **百分比**:以百分比形式显示,适用于比率统计(如:50%) - -设置格式化 - - 4. **精度设置**:设置小数点后的保留位数 - - 提供从 **0 位** 到 **4 位** 小数的选择 - - **注**:设定精度后,系统会按这个精度四舍五入显示数值 - -设置精度 - - 5. **默认值**(可选):新记录会自动填入预设数字 - -### 显示设置 - -除了基础数值,还可以通过图形化方式增强数据的可读性。 - -- **步骤**: - 1. 在字段配置页面的“显示方式”栏中进行选择 - 2. **默认**:仅显示纯文本数值 - 3. **单值字段**:可切换为 **条形** 或 **环形** - - **目标值**:设置图形满格对应的数值(如满分为 100,则填 100) - - **颜色**:自定义图形的填充颜色 - - **显示数字**:勾选后可在图形旁同时显示具体数值 - 4. **多值字段**:可切换为 **条形** 或 **折线** - -设置显示方式 - -## 二、 使用场景 - -### 场景一:财务管理 - 合同金额记录 - -- **数据表前提**:合同管理表 -- **场景**:需记录每份合同的金额,要求精确到分,并显示人民币符号 -- **操作步骤**: - 1. 新建字段命名为“合同金额” - 2. 格式选择 **货币**,符号选择 **¥** - 3. 精度选择 **保留 2 位小数**(如:¥1,000.00) - -### 场景二:目标管理 - 销售业绩达成率 - -- **数据表前提**:销售业绩表 -- **场景**:直观展示销售人员的业绩完成度,以便快速识别是否达标 -- **操作步骤**: - 1. 新建字段命名为“达成率” - 2. 格式选择 **百分比** - 3. 显示方式选择 **条形** - 4. 设置目标值为 **1**(即 100%),选择绿色作为进度颜色 - -## 三、 功能特性 - -数字字段具备以下核心功能: - -- **自动校验**:仅允许输入整数或小数(如 `12`、`3.14`) -- **格式多样**:支持常规数字、货币符号、百分比三种格式化显示 -- **可视化展示**:支持将数值转化为条形、环形或折线,直观呈现数据状态 -- **公式联动**:公式、汇总和查找结果如果是数字,也可以使用同样的格式 - -## 四、 注意事项 - -- 百分比采用按小数存储的机制,因此输入 `100%` 实际存储为 `1`,输入 `50%` 实际存储为 `0.5` diff --git a/zh/basic/field/basic/rating.mdx b/zh/basic/field/basic/rating.mdx deleted file mode 100644 index 6d2d69a7..00000000 --- a/zh/basic/field/basic/rating.mdx +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: "评分" -description: "用于为记录添加可视化的数值评分。来直观展示数据的质量、优先级或满意度,常用于产品评价、服务反馈及绩效考核等场景。让用户可以快速地对数据进行定性分析。" ---- - -## 一、 创建与配置 - -用户可以自定义评分的上限及显示样式,使其适配不同的业务语境。 - -1. **新建字段** - - 点击表格视图表头右侧的 `+` 图标,在字段类型列表中选择 **评分** - - 输入字段名称(如“客户满意度”、“推荐指数”) - -2. **最大值设定** - - 系统默认最大值为 **5**(即5星制) - - 用户可以根据需求调整最大值(如设置为 **10** 进行十分制打分),这个最大值决定了用户可以选择的评分范围 - -3. **图标样式** - - 默认显示为 **⭐️** - - 支持更换为其他图标符号(如 ❤️ 、👍 、💡 等),以匹配特定的业务含义(例如用灯泡表示创意分) - -## 二、 使用场景 - -- **产品评价管理**:在电商或库存表中,快速录入产品的用户评分,便于后续筛选出高分热销商品 -- **服务质量反馈**:在售后记录表中,收集客户对服务的满意度打分,量化服务质量以便改进 -- **员工绩效评估**:在人事考核表中,管理者利用评分字段对员工的各项能力指标进行打分,直观呈现绩效等级 - -## 三、 功能特性 - -- **直观量化**:将抽象的评价转化为可视化的图标数量,无需阅读文字即可快速判断数据优劣 -- **组合评价**:常与 **多行文本** 字段配合使用,构建“定量评分 + 定性评论”的完整评价体系 -- **公式联动**:评分字段的数值支持被 **公式** 引用。例如,您可以引用多个维度的评分字段(如“服务态度”+“专业能力”)来计算 **平均分** 或 **总分** - -## 四、 注意事项 - -- **评分标准统一**:在设定最大值(如5分或10分)时,需确保团队成员或填报用户对分数的含义有统一认知,避免产生歧义 -- **配置修改风险**:如果后续调低了“最大值”(例如从10分改为5分),原数据中超过新上限的分数可能无法正确显示,建议在调整配置前确认历史数据情况 \ No newline at end of file diff --git a/zh/basic/field/basic/single-line-text.mdx b/zh/basic/field/basic/single-line-text.mdx deleted file mode 100644 index 6809aae0..00000000 --- a/zh/basic/field/basic/single-line-text.mdx +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: "单行文本" -description: "用于录入和存储较短的字符串信息(如姓名、标题、编号、网址等)。" ---- - -## 一、 创建与配置 - -通过简单的设置,您可以创建文本字段并定义其点击交互行为。 - -### 1. 创建文本字段 - -- **步骤**: - 1. 点击表头右侧的 **+** 图标,在字段类型列表中选择 **单行文本** - 2. 输入字段名称(如“客户姓名”、“订单编号”) - 3. **默认值设置**(可选):在配置弹窗中输入特定的文本(如“待审核”)。设置后,每次新增记录时,该字段会自动填充此内容,减少重复录入 - - -单行文本创建与默认值 - -### 2. 设置显示方式 - -文本字段中设置四种常用交互展现方式: - - - - 此为默认显示格式,最为常用。所显示的文本没有任何附加特性。 - - - - 显示为URL的文本在被点击时将启动用户默认的浏览器,自动访问该网址。 - - - - 显示为Email的文本在被点击时将启动用户默认的邮箱应用(如Outlook、Mail等)。 - - - - 显示为电话的文本在被点击时将启动用户默认的通讯应用(如Facetime、Skype等)。 - - - -设置显示方式 - -交互展现不仅可以在单行文本中使用,还可以在公式字段,汇总字段,引用中使用,详情请看[交互展现](/zh/basic/field/common/show-as) - -## 二、 使用场景 - -### 场景一:客户联系人管理 -- **场景**:录入客户信息后,希望能直接点击拨打电话或访问客户官网,无需复制粘贴 -- **操作步骤**: - 1. 新建“公司官网”字段,显示方式设为 **URL**,点击即可跳转查看 - 2. 新建“手机号”字段,显示方式设为 **电话**,手机端访问时点击即可一键拨打 - -### 场景二:固定流程流转 -- **场景**:新建工单时,初始状态统一为“新建”,希望能自动填入 -- **操作步骤**: - 1. 新建单行文本字段,命名为“当前阶段” - 2. 在字段配置的 **默认值** 中输入“新建” - 3. 这样每次添加工单记录时,该字段自动预填,无需手动输入 - -## 三、 功能特性 - -- **基础录入**:支持手动输入、复制粘贴,适用于无需换行的短内容 -- **可交互**:可识别 URL、电子邮箱和电话号码,并提供点击跳转或拨打功能 -- **数据处理**:支持排序、筛选,支持使用文本处理函数进行提取等操作。 -- **效率工具**:支持设置“默认值”,新建记录时自动填充预设内容,减少重复录入 - -## 四、注意事项 - -- **换行限制**:单行文本不支持换行(回车键通常用于确认输入)。如果需要录入大段文字或包含换行的内容(如备注、文章摘要),请使用 **多行文本** 字段 -- **功能通用性**:交互展现配置(URL/Email/电话)不仅适用于单行文本,同样适用于 **公式**、**汇总**、**引用** 等字段,设置路径一致 diff --git a/zh/basic/field/basic/single-select.mdx b/zh/basic/field/basic/single-select.mdx deleted file mode 100644 index 9430dd40..00000000 --- a/zh/basic/field/basic/single-select.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: "单选" -description: "从预设的选项列表中选择一个选项,适合做状态、分类和优先级。" ---- - -## 一、 创建与配置 - -通过预设选项,可以避免手动输入带来的拼写错误,确保数据的一致性。 - -### 1. 新建选项 - -- **步骤**: - 1. 点击表头右侧的 `+` 图标,在字段类型列表中选择 **单选** - 2. 输入字段名称 - 3. 在输入框输入选项名称,按下 **回车键** 即可快速生成新选项 - 4. 需要时可以设置默认值,让新记录自动带上常用选项 - -### 2. 选项颜色与排序 - -- **颜色设置**:点击选项名称左侧的 **小圆点**,从色板中选择代表该选项的颜色 -- **选项排序**:按住选项左侧图标拖拽,可调整选项在下拉列表中的排列顺序 -- **修改与删除**:直接修改选项名称,所有历史数据会自动同步更新;点击右侧垃圾桶图标可删除选项 -- **允许新增选项**:可以控制编辑时是否允许直接新增选项。关闭后,输入内容必须来自已有选项 - -## 二、 使用场景 - -### 场景一:项目进度管理(看板视图) - -- **场景**:需要清晰地标识每个任务当前所处的流转阶段,并支持拖拽改变状态 -- **操作步骤**: - 1. 新建“任务状态”字段,设置选项为:**未开始**(灰色)、**进行中**(蓝色)、**已完成**(绿色) - 2. 基于此字段创建 **看板视图**,任务将自动按列分组,卡片在不同列之间拖拽即可变更状态 - -### 场景二:客户分级管理(分组查看) - -- **场景**:根据客户的重要程度进行分类,以便优先跟进高价值客户 -- **操作步骤**: - 1. 新建“优先级”字段,设置选项为:**高**(红色)、**中**(黄色)、**低**(绿色) - 2. 在表格视图中点击“分组”,选择按“优先级”分组,即可分层查看各类客户清单 - ---- - -## 三、 功能特性 - -- **唯一性**:单元格内只能包含 **1** 个选项,确保数据的互斥性(例如:一个任务不能既是“未开始”又是“已完成”) -- **可视化**:通过颜色,用户无需阅读文字即可直观判断数据属性 -- **视图核心**:单选字段是构建 **看板视图** 的必要条件,也是进行数据 **分组** 和 **筛选** 最常用的维度 -- **数据规范**:相比文本字段,单选字段限制了输入范围,有效防止因拼写错误导致的数据统计误差 -- **默认值**:可以给新记录预设一个常用状态,减少重复选择 - ---- - -## 四、 注意事项 - -- **与多选的区别**:单选字段限制每条记录只能选择 **1** 个值;如果需要为记录添加多个标签(如一篇文章既属于“科技”又属于“财经”),请使用 **多选** 字段 -- **类型转换风险**:将“多选字段”转换为“单选字段”时,如果原数据包含多个选项,系统通常只会保留第一个选项,可能导致数据丢失,请谨慎操作 diff --git a/zh/basic/field/button-practical-guide.mdx b/zh/basic/field/button-practical-guide.mdx new file mode 100644 index 00000000..1ff289da --- /dev/null +++ b/zh/basic/field/button-practical-guide.mdx @@ -0,0 +1,109 @@ +--- +title: "按钮字段实践" +description: "通过按钮字段触发自动化,把线索转商机、任务催办等固定流程变成一次点击。" +--- + +按钮字段适合处理固定、重复、需要人工确认后触发的流程。常见例子包括把线索转为商机、安排稿件发布、发送任务催办,或把当前记录同步到外部系统。 + +这页用“线索转商机”作为完整示例,说明如何把一个按钮和自动化流程连接起来。 + +## 适用场景 + +| 场景 | 点击按钮后可以做什么 | +| --- | --- | +| 线索转商机 | 在商机表中创建记录,并把原线索标记为已转化 | +| 稿件安排发布 | 创建发布排期,并通知负责发布的同事 | +| 任务催办 | 向负责人发送邮件或团队消息 | +| 外部系统同步 | 通过 HTTP 请求把当前记录发送到其他系统 | + +## 示例:线索转商机 + +在 CRM 表中,销售人员判断一条线索已经成熟后,点击“转为商机”按钮。自动化流程会完成两件事: + +- 在“商机跟进表”中创建一条新记录,并带入公司、联系人等关键信息。 +- 把“销售线索表”中的原线索状态更新为“已转化”。 + +### 准备表格 + +这个示例需要两张表: + +| 表格 | 用途 | 示例字段 | +| --- | --- | --- | +| 销售线索表 | 保存待跟进线索,也是按钮所在的表 | 公司名称、联系人、负责人、状态 | +| 商机跟进表 | 保存已经转化的商机 | 商机名称、关联客户、负责人、来源线索 | + +### 创建按钮字段 + +在“销售线索表”中添加一个按钮字段: + + + + 新建字段,字段类型选择 **按钮**。 + + + 按钮文字填写“转为商机”,并选择容易识别的颜色。 + + + 如果不希望误触,可以开启 **点击前需要确认**,并填写确认弹窗的标题、内容和确认按钮文字。 + + + +### 配置自动化动作 + +按钮字段创建后,需要配置点击按钮时执行的自动化流程。 + + + + 在按钮字段配置中点击 **自定义自动化**,新建一个流程。 + + + 添加 **新增记录** 动作,目标数据表选择“商机跟进表”。 + + + 把线索里的关键字段写入新商机。比如: + - `商机名称` = 触发记录中的 `公司名称` + - `关联客户` = 触发记录中的 `联系人` + - `负责人` = 触发记录中的 `负责人` + + + 再添加一个 **更新记录** 动作,目标数据表选择“销售线索表”,记录 ID 选择触发流程的记录 ID,并把 `状态` 更新为“已转化”。 + + + +保存后,销售人员点击“转为商机”,就会创建商机并更新原线索状态。 + +### 添加通知 + +如果转化后需要通知销售主管或商机负责人,可以在自动化流程中继续添加 **发送邮件** 或团队消息动作。 + +常见配置: + +- **收件人**:固定邮箱,或来自当前记录里的成员字段。 +- **主题和正文**:插入触发记录中的字段值,比如公司名称、负责人、线索来源。 + +邮件正文可以写成: + +> 新商机转化提醒:[公司名称] 已由 [负责人] 转化为商机,请及时跟进。 + +### 连接外部系统 + +如果转化商机后还需要同步到 CRM、财务系统或其他内部工具,可以在自动化流程中添加 HTTP 请求动作。 + +HTTP 请求适合已经有稳定 API 的系统。配置前请先确认目标系统的接口地址、请求方法、鉴权方式和字段格式。 + +### 限制重复点击 + +线索转商机场景通常不希望同一条线索被重复转化。可以在按钮字段中开启 **限制点击次数**: + +| 设置 | 建议 | +| --- | --- | +| 最大点击计数 | 设置为 `1` | +| 允许重置点击计数 | 通常保持关闭,避免重复生成商机 | + +达到点击上限后,该记录上的按钮会变为不可点击状态。 + +## 注意事项 + +- 按钮点击后是否成功执行,取决于关联的自动化流程是否正常启用。 +- 每次成功触发自动化流程,都会计入工作空间的自动化运行次数。 +- 如果按钮可能改写关键数据,建议开启点击确认,并限制可点击次数。 diff --git a/zh/basic/field/button.mdx b/zh/basic/field/button.mdx new file mode 100644 index 00000000..051cf319 --- /dev/null +++ b/zh/basic/field/button.mdx @@ -0,0 +1,54 @@ +--- +title: "按钮" +description: "用于在每条记录中添加可点击按钮,并通过按钮触发自动化流程。" +--- + +按钮字段用于在每条记录中添加一个可点击按钮。点击按钮后,可以触发预先配置好的自动化流程,比如更新记录、创建记录、发送消息或调用外部系统。 + +## 适用场景 + +| 场景 | 适合动作 | +| --- | --- | +| 状态流转 | 开始处理、完成任务、提交审批、归档 | +| 数据流转 | 把线索转为商机,把申请生成任务,把当前记录写入另一张表 | +| 通知提醒 | 发送邮件、团队消息或催办通知 | +| 外部集成 | 通过自动化中的 HTTP 动作连接外部系统 | + +## 创建和设置 + + + + 在表格中新建字段,选择 **按钮** 类型。 + + + 自定义按钮文字和颜色,比如“发送邮件”、“提交审批”或“生成报告”。 + + + 按需开启 **限制点击次数** 或 **点击前需要确认**。 + + + 点击 **自定义自动化**,设置按钮点击后要执行的动作。 + + + +## 配置项 + +| 配置 | 说明 | +| --- | --- | +| 按钮文字与颜色 | 控制按钮在单元格中的显示样式 | +| 限制点击次数 | 为每条记录设置最大点击计数,也可以配置是否允许重置 | +| 点击前需要确认 | 点击按钮后先显示确认弹窗,适合不可随意触发的操作 | +| 自定义自动化 | 配置按钮触发后的自动化流程 | + +## 常见用法 + +- **状态流转**:点击“完成任务”按钮,自动把当前记录的状态改为“已完成”。 +- **线索转商机**:点击“转为商机”按钮,自动在商机表中新增记录,并更新线索状态。 +- **发送提醒**:点击“催办”按钮,通过邮件或团队工具发送提醒消息。 +- **外部系统集成**:通过自动化中的 HTTP 动作,把当前记录同步到外部系统。 + +## 注意事项 + +- 每次点击按钮并成功触发自动化流程,都会计入工作空间的自动化运行次数。 +- 点击按钮的权限与编辑记录的权限是分离的。只要用户能看到按钮,就可能点击并触发流程,包括只读访问或对外分享链接访问。 +- 按钮本身不执行操作,它依赖关联的自动化流程。如果流程被禁用或删除,点击按钮不会产生效果。 diff --git a/zh/basic/field/checkbox.mdx b/zh/basic/field/checkbox.mdx new file mode 100644 index 00000000..c1518bc1 --- /dev/null +++ b/zh/basic/field/checkbox.mdx @@ -0,0 +1,56 @@ +--- +title: "勾选" +description: "用于标记“是/否”、“完成/未完成”等二元状态的字段类型。" +--- + +勾选字段用于记录二元状态,比如“是/否”、“开/关”、“已完成/未完成”。用户只需点击单元格,即可在选中和未选中之间切换。 + +## 适用场景 + +| 场景 | 适合内容 | +| --- | --- | +| 任务完成状态 | 是否完成、是否已处理、是否已归档 | +| 快速标记 | 是否 VIP、是否黑名单、是否急需补货 | +| 流程节点确认 | 图片已上传、文案已校对、审核已通过 | +| 自动化触发 | 勾选后发送通知、更新状态或触发后续流程 | + +## 创建和设置 + + + + 点击表格列标题右侧的 `+`,在字段类型列表中选择 **勾选**。 + + + 输入字段名称,比如“是否完成”、“是否 VIP”或“审核通过”。 + + + 按需设置新记录默认是选中还是未选中。 + + + 保存后,即可通过点击单元格切换状态。 + + + +## 常见用法 + +- **任务状态管理**:在任务表中用“是否完成”标记进度,再创建“未完成任务”视图,只显示未勾选记录。 +- **快速标记属性**:在客户表中标记“是否 VIP”,在库存表中标记“是否急需补货”。 +- **流程节点确认**:在内容排期表中设置“图片已上传”、“文案已校对”等字段,让协作者知道每个节点是否完成。 + +## 公式中使用勾选值 + +勾选字段可以在公式中作为布尔值使用。比如,根据完成状态输出不同文本: + +```js +IF({是否完成}, "已完成", "进行中") +``` + +## 统计和自动化 + +- **统计完成率**:底部统计栏可以查看已勾选数量;配合计数可以计算完成率。 +- **触发自动化**:当“审核通过”被勾选时,可以触发自动化发送邮件或更新其他字段。 + +## 注意事项 + +- 勾选字段只表达两种状态。如果需要多个状态,比如“未开始”、“进行中”、“已完成”,请使用 **单选** 字段。 +- 勾选字段适合作为明确开关,不适合存放备注、原因或说明文字。 diff --git a/zh/basic/field/common/formatter.mdx b/zh/basic/field/common/formatter.mdx index 68cb158d..4e368a72 100644 --- a/zh/basic/field/common/formatter.mdx +++ b/zh/basic/field/common/formatter.mdx @@ -1,40 +1,41 @@ --- title: "格式化" -description: "Teable 提供了多种格式化选项,包括数字格式化、日期时间格式化、文本格式化等,以确保数据在不同场景下都能以最合适的方式展示。" +description: "用于控制字段值的显示样式,比如小数位、百分比、货币符号、日期格式和时间格式。" --- +格式化用于控制字段值的显示方式。它不会改变字段的原始数据,只影响用户在表格中看到的样式,比如小数位、百分比、货币符号、日期格式和时间格式。 + ## 数字格式化 -处理数字数据时,有时我们希望以特定的方式展示它们。Teable提供了以下几种数字格式化选项: +数字字段可以按业务需要设置显示格式: -* **小数**:您可以选择显示数字的小数点后的位数,范围是0到5。 -* **百分比**:将数字转换为百分比形式。例如,0.25会被显示为25%。 -* **货币**:您可以给数字添加货币符号,如"$",并选择小数点后的位数。 +| 格式 | 说明 | +| --- | --- | +| 小数 | 设置小数点后的显示位数 | +| 百分比 | 将数字显示为百分比,比如 `0.25` 显示为 `25%` | +| 货币 | 为数字添加货币符号,并设置小数位数 | ## 日期时间格式化 -在 Teable中,您可以选择多种日期和时间的展示方式: - -* **日期格式**:根据您的偏好,您可以选择以下日期格式: - * US风格: 如 12/31/2023 - * 欧洲风格: 如 31/12/2023 - * 亚洲风格: 如 2023/12/31 - * 国际标准: 如 2023-12-31 - * 仅年-月: 如 2023-12 - * 仅月-日: 如 12-31 - * 仅年份: 如 2023 - * 仅月份: 如 12 - * 仅日期: 如 31 -* **时间格式**:Teable提供了多种时间格式: - * 24小时制: 如 23:59 - * 12小时制 (包括上午/下午): 如 11:59 PM - * 不显示时间 -* **时区选择**:您可以根据您所在的地区,选择合适的时区,确保时间准确无误。 - -这些格式化选项确保您可以根据自己的喜好和需求,选择最合适的日期和时间展示方式。 - -## 字段基础数据类型列表 -| Teable字段类型 | 基础数据类型 | 支持格式化 | 动态类型标识 | +日期和时间字段可以设置日期格式、时间格式和时区。 + +| 设置 | 示例 | +| --- | --- | +| US 风格 | `12/31/2023` | +| 欧洲风格 | `31/12/2023` | +| 亚洲风格 | `2023/12/31` | +| 国际标准 | `2023-12-31` | +| 仅年-月 | `2023-12` | +| 仅月-日 | `12-31` | +| 仅年份 | `2023` | +| 仅月份 | `12` | +| 仅日期 | `31` | + +时间格式支持 24 小时制、12 小时制,也可以不显示时间。时区可以按业务需要选择固定时区,或跟随查看者所在地区显示。 + +## 字段基础数据类型 + +| Teable 字段类型 | 基础数据类型 | 支持格式化 | 动态类型标识 | | ---------- | ------ | ----- | ------ | | 单行文本 | 文本 | 否 | 否 | | 长文本 | 文本 | 否 | 否 | @@ -58,6 +59,8 @@ description: "Teable 提供了多种格式化选项,包括数字格式化、 | 自动编号 | 数字 | 是 | 否 | | 按钮 | 文本 | 否 | 否 | -> 评分字段会展示为一个可交互的计分条,由一串可点亮图标表示,不可参与数字类型的格式化,但本身属于数字类型,可参与数字计算 -> 公式和汇总字段的格式化依赖于它们的输出类型,这意味着如果公式或汇总的结果是日期或数字类型,它们可以被格式化。如果结果是文本或布尔值,则不适用格式化。 -> 所有的字段均可以被引用,引用过后依然遵守本字段的基础值类型 +## 注意事项 + +- 评分字段会展示为可交互的计分条,不参与数字格式化,但本身属于数字类型,可参与数字计算。 +- 公式和汇总字段的格式化取决于输出类型。结果是日期或数字时,可以继续格式化;结果是文本或布尔值时,则不适用。 +- 字段被引用后,仍然遵守原字段的基础值类型。 diff --git a/zh/basic/field/common/is-multiple-value.mdx b/zh/basic/field/common/is-multiple-value.mdx index df653b8a..83235b89 100644 --- a/zh/basic/field/common/is-multiple-value.mdx +++ b/zh/basic/field/common/is-multiple-value.mdx @@ -1,64 +1,48 @@ --- title: "单值与多值" -description: "在表格的字段设计中,你可能已经注意到了“单值”和“多值”这两个概念。它们描述的是字段中的单元格是否存储单一值还是一系列的值(数组)。 每种字段都分为单值和多值的两种状态,理解这两个概念在进阶使用时非常有用。" +description: "说明字段中的单元格是存储单一值,还是存储一组值。" --- -## 基础概念:单值 vs 多值 +单值和多值描述的是一个单元格里存放一个值,还是一组值。理解这个概念后,更容易判断字段在关联、查找、汇总和公式中为什么会返回多个结果。 -* **单值**:单一的、确定的信息。例如,“今天的日期”或“张三的电话号码”。 -* **多值**:即数组值,一系列的信息。例如,“这个月的所有日期”或“张三的所有电话号码”。 +## 基础概念 -## 默认的单值和多值 - -| 字段名称 | 中文描述 | 默认状态 | -| ---------------- | ------ | ---- | -| SingleLineText | 单行文本 | 单值 | -| LongText | 多行文本 | 单值 | -| User | 用户 | 可选\* | -| Attachment | 附件 | 多值 | -| Checkbox | 复选框 | 单值 | -| MultipleSelect | 多选 | 多值 | -| SingleSelect | 单选 | 单值 | -| Date | 日期 | 单值 | -| Number | 数字 | 单值 | -| Duration | 持续时间 | 单值 | -| Rating | 评分 | 单值 | -| Formula | 公式 | 动态\* | -| Rollup | 汇总 | 动态\* | -| Count | 计数 | 单值 | -| Link | 关联 | 可选\* | -| CreatedTime | 创建时间 | 单值 | -| LastModifiedTime | 最后修改时间 | 单值 | -| CreatedBy | 创建者 | 单值 | -| LastModifiedBy | 最后修改者 | 单值 | -| AutoNumber | 自动编号 | 单值 | -| Button | 按钮 | 单值 | +| 类型 | 说明 | 示例 | +| --- | --- | --- | +| 单值 | 单一、确定的信息 | “今天的日期”、“张三的电话号码” | +| 多值 | 一组值,也可以理解为数组 | “这个月的所有日期”、“张三的所有电话号码” | -## 关联与引用导致的状态变化 +## 默认的单值和多值 -虽然大多数字段都有其默认的单值或多值状态,但由于关联和引用的机制,字段的状态可能会发生变化。 +| 字段类型 | 默认状态 | +| --- | --- | +| 单行文本、多行文本 | 单值 | +| 单选、勾选、日期、数字、评分 | 单值 | +| 创建时间、修改时间、创建人、修改人、自动编号、按钮 | 单值 | +| 多选、附件 | 多值 | +| 成员 | 可选 | +| 关联 | 可选 | +| 公式、汇总 | 动态 | -* **关联字段的影响**:如果关联字段是多值的,那么基于这个关联字段引用的所有字段都将变为多值。 - **示例**:想象你有一个“任务”表和一个“员工”表。如果一个任务可以由多个员工完成,则“任务”表中与“员工”表的关联字段将是多值。因此,任何基于这个关联字段引用的字段(如员工的电话号码)都将变为多值。 -* **公式与汇总**:尽管大多数时候它们都是单值,但公式可以引用多值字段,从而变成多值。同时,如果它们通过多值关联字段被引用,它们也会变成多值。 - **示例**:假设你有一个公式字段,用于计算每个员工的总工资。如果这个公式引用了一个多值的工资字段(例如,每个员工在不同的项目上的工资),那么这个公式字段也将变为多值。 +这里的“默认状态”指字段自身的常见状态。**可选** 表示可以通过字段配置决定单值或多值;**动态** 表示结果取决于公式逻辑、汇总函数,以及引用的字段是否为多值。经过关联、查找、汇总或公式引用后,结果可能会变化。 -## 示例 +## 关联与引用导致的状态变化 -理解单值和多值的区别对于高级用户来说非常有用。它帮助用户了解为什么某些字段会有多个值,并指导他们如何正确地设置和使用这些字段。 +- **关联字段的影响**:如果关联字段是多值,基于这个关联字段引用的字段也可能变为多值。比如一个任务可以由多个员工完成,基于这些员工查找电话号码时,结果也会是多个电话号码。 +- **公式与汇总**:公式和汇总通常是单值,但如果引用了多值字段,结果也可能变成多值。 -### 员工信息和项目任务 +### 示例 假设你管理一个公司,并使用 Teable 创建了两个表:`员工信息` 和 `项目任务`。 -1. **员工信息** 表: +**员工信息表** | 姓名 | 电话号码 | 邮箱地址 | 任务 | | -- | ------ | ----------------- | -------- | | 张三 | 123456 | zhang@company.com | 任务1, 任务2 | | 李四 | 789012 | li@company.com | 任务3 | -2. **项目任务** 表: +**项目任务表** | 任务名称 | 负责员工 | 截止日期 | 进度 | | ---- | ---- | ---------- | --- | @@ -68,11 +52,11 @@ description: "在表格的字段设计中,你可能已经注意到了“单值 在这个例子中: -* **员工信息** 表中的 "任务" 字段是一个多值字段,因为一个员工可能负责多个任务。 -* **项目任务** 表中的 "负责员工" 字段是单值字段,因为每个任务只由一个员工负责。 +- **员工信息** 表中的“任务”字段是多值字段,因为一个员工可能负责多个任务。 +- **项目任务** 表中的“负责员工”字段是单值字段,因为每个任务只由一个员工负责。 -当你在 "项目任务" 表中创建一个新任务并为其指定负责员工时,该员工的 "任务" 字段会自动更新,包含他或她负责的所有任务。 +当你在“项目任务”表中创建新任务并指定负责员工时,该员工在“员工信息”表中的“任务”字段会自动更新,包含他或她负责的所有任务。 ### 数字小图表 -**示例**:你可能会想知道为什么数字字段有时会显示多条线或多个柱子,而不只是一个。这是因为它实际上是一个多值字段,可能是由于之前的关联或引用操作。 +数字字段有时会显示多条线或多个柱子,而不是一个数值。这通常说明它已经变成多值字段,可能来自关联、查找、汇总或公式引用。 diff --git a/zh/basic/field/common/show-as.mdx b/zh/basic/field/common/show-as.mdx index 49b63b7c..9bbaa531 100644 --- a/zh/basic/field/common/show-as.mdx +++ b/zh/basic/field/common/show-as.mdx @@ -1,26 +1,37 @@ --- title: "交互展现" -description: "为特定字段选择更具互动性的显示方式,以提高数据的可读性和操作性。" +description: "用于改变字段值的显示和点击行为,比如网址、邮箱、电话和数字图形展示。" --- +交互展现用于改变字段值的显示和点击行为。它不会改变字段类型,只影响字段内容的查看和操作方式。 + ## 文本字段的交互展现 -* **URL**:将文本字段中的内容显示为网址,并在点击时在新的标签页中打开该链接。 -* **电子邮件(Email)**:将文本字段中的内容显示为电子邮件地址,并在点击时启动默认的电子邮件应用以发送邮件。 -* **电话(Phone)**:将文本字段中的内容显示为电话号码,并在点击时启动拨打电话的操作(取决于设备支持情况)。 +| 显示方式 | 说明 | +| --- | --- | +| URL | 将文本显示为网址,点击后在浏览器中打开链接 | +| Email | 将文本显示为邮箱地址,点击后打开默认邮箱应用 | +| Phone | 将文本显示为电话号码,点击后启动拨打电话操作;具体行为取决于设备支持情况 | ## 数字字段的交互展现 -对于数字字段,您可以选择以下的显示方式: +数字字段可以用图形方式显示数值状态。 + +### 单值数字字段 -**单值数字字段**: +| 显示方式 | 说明 | +| --- | --- | +| 柱形图(Bar) | 用柱形长度表示数值大小,可设置颜色、是否显示数值,以及代表 100% 的目标值 | +| 环形图(Ring) | 用环形进度表示数值占比,可设置颜色、是否显示数值,以及代表 100% 的目标值 | -* **柱形图(Bar)**:数字值将以柱形图的形式显示。你可以为其设置颜色、是否在图上显示具体的数值以及表示100%最大值的具体数字(这并不代表数值的硬上限,而只是用于展示参考)。 -* **环形图(Ring)**:数字值将以环形图的形式显示。同样,你可以为其设置颜色、是否在图上显示具体的数值以及表示100%最大值的具体数字。 +### 多值数字字段 -**多值数字字段**: +| 显示方式 | 说明 | +| --- | --- | +| 柱形图(Bar) | 将多个数字值以并列柱形图展示 | +| 线形图(Line) | 将多个数字值以线形图展示 | -* **柱形图(Bar)**:多个数字值将以并列的柱形图形式展示。你可以为其设置颜色。 -* **线形图(Line)**:多个数字值将以线形图的形式展示。你也可以为其设置颜色。 +## 注意事项 -使用这些交互展现的功能,你可以更为直观地查看和理解数据,同时使你的数据看起来更为生动和有趣。 +- 目标值只用于展示参考,不代表数值硬上限。 +- 交互展现也可以用于部分公式、汇总和查找结果,具体可用选项取决于字段结果类型。 diff --git a/zh/basic/field/conditional-lookup.mdx b/zh/basic/field/conditional-lookup.mdx new file mode 100644 index 00000000..b2de24a4 --- /dev/null +++ b/zh/basic/field/conditional-lookup.mdx @@ -0,0 +1,129 @@ +--- +title: "条件查找" +description: "用于按筛选条件跨表查找数据,并返回符合条件的记录值。" +--- + +条件查找可以在不预先建立关联关系的情况下,根据筛选条件从目标表中获取符合要求的数据。它适合按当前记录的字段值动态查找明细,比如查找同品类销量最高的产品,或查找某个周期对应的数据。 + +## 适用场景 + +| 场景 | 适合内容 | +| --- | --- | +| 品类分析 | 查找同一品类下销量最高的产品 | +| 周期对比 | 查找上一个周期的销售额,用于环比计算 | +| 客户匹配 | 根据电话、邮箱或客户编号查找对应资料 | +| 明细查看 | 根据当前记录条件返回匹配的明细列表 | + +## 操作流程 + + + + 点击字段名最右侧的 `+` 图标,选择 **条件查找** 字段类型,并输入字段标题,比如“相关订单”。 + + + 在目标表选择下拉菜单中选择要查询的数据表。 + + + 选择要提取的数据字段,并确认返回数据类型。 + + + 添加筛选条件,选择字段、条件类型和比较值。比较值可以是静态值,也可以引用当前表字段。 + + + 按需设置排序字段、排序方式和显示记录数量。 + + + +筛选条件至少需要配置一个。多个条件可以选择“所有条件满足(AND)”或“任一条件满足(OR)”。 + +## 场景实践 + +### 销售数据周期环比 + +**数据表** + +- 周期销售统计表(包含周期、期初日期、期末日期、销售金额等字段) +- 销售明细表(包含销售金额、销售日期等字段) + +在周期销售统计表中计算每个周期的销售环比增长率。先用条件汇总得到当期销售额,再用条件查找取上期销售额,最后用公式计算环比。 + +数据周期环比 + +**操作步骤** + +**创建条件汇总字段获取当期销售额** + +1. 在周期销售统计表中新建条件汇总字段,标题设为“当期销售额” +2. 目标表选择:销售明细表 +3. 汇总字段选择:销售金额 +4. 筛选条件设置: + - 字段:销售日期 → 条件:早于或等于 → 值:当前表的期末日期字段 + - 字段:销售日期 → 条件:晚于或等于 → 值:当前表的期初日期字段 +5. 聚合函数选择:求和 + +**创建条件查找字段获取上期销售额** + +1. 新建条件查找字段,标题设为“上期销售额” +2. 目标表选择:周期销售统计表(本表) +3. 字段选择:当期销售额 +4. 筛选条件设置: + - 字段:期末日期 → 条件:等于 → 值:当前表的上期期末日期字段 +5. 聚合函数选择:求和 + +**创建公式字段计算环比** +1. 新建公式字段,标题设为“环比增长率” +2. 公式设置为 `(当期销售额 - 上期销售额) / 上期销售额 * 100` +3. 格式设置为百分比,保留 2 位小数 + +### 销售数据产品分析 + +销售数据产品分析 + +**数据表** + +- 产品表(包含品类 ID、产品名称、销量等字段) +- 品类表(包含品类 ID、品类名称等字段) + +在品类表中查找每个品类下销量最高的产品,用来查看各品类的主力产品。 + +**操作步骤** + +**销量最高产品** + +1. 在品类表中新建条件查找字段,标题设为“销量最高产品” +2. 目标表选择:产品表 +3. 查找字段选择:产品名称 +4. 筛选条件设置: + - 字段:品类 ID → 条件:等于 → 值:当前表的品类 ID 字段 +5. 排序设置:销量字段 → 降序 +6. 限制显示:1 条记录 + +**销量** + +1. 再次新建条件查找字段,标题设为“销量” +2. 目标表选择:产品表 +3. 查找字段选择:销量 +4. 筛选条件设置: + - 字段:品类 ID → 条件:等于 → 值:当前表的品类 ID 字段 +5. 排序设置:销量字段 → 降序 +6. 限制显示:1 条记录 + +## 常见问题 + + + + 某些复杂字段类型,比如图片、附件,可能不支持作为筛选条件。 + + + + 普通查找需要先建立关联字段;条件查找可以直接用筛选条件匹配目标表数据。 + + diff --git a/zh/basic/field/conditional-rollup.mdx b/zh/basic/field/conditional-rollup.mdx new file mode 100644 index 00000000..5ebeb770 --- /dev/null +++ b/zh/basic/field/conditional-rollup.mdx @@ -0,0 +1,107 @@ +--- +title: "条件汇总" +description: "用于按筛选条件跨表统计数据,并返回一个聚合结果值。" +--- + +条件汇总可以在不预先建立关联关系的情况下,从目标表中筛选符合条件的记录,并对指定字段进行统计计算。它适合按当前记录的字段值动态计算数量、总和、平均值等结果。 + +## 适用场景 + +| 场景 | 适合内容 | +| --- | --- | +| 员工任务统计 | 统计某位负责人的进行中任务数、已完成任务数 | +| 周期销售统计 | 按日期范围计算销售额、订单数或平均客单价 | +| 重复数据识别 | 按名称、电话或编号统计重复次数 | +| 区域经营报表 | 按区域、门店或渠道动态汇总业务数据 | + +## 操作流程 + + + + 点击字段名最右侧的 `+` 图标,选择 **条件汇总** 字段类型,并输入字段标题,比如“总销售额”。 + + + 在目标表选择下拉菜单中选择要查询的数据表。 + + + 选择要进行统计计算的数据字段,并确认字段类型。 + + + 添加筛选条件,选择字段、条件类型和比较值。比较值可以是静态值,也可以引用当前表字段。 + + + 根据数据类型选择原值、去重、去重计数、求和、计数、平均值、最大值、最小值等计算方式。 + + + +## 场景实践 + +### 团队任务量统计 + +任务量统计 + +**数据表** + +- 任务表 +- 统计表 + +团队管理员需要统计每个员工不同状态的任务数量,比如进行中和已完成任务数,用来查看当前任务分布和完成情况。 + +**进行中任务数** + +1. 在员工信息表中新建条件汇总字段,标题设为“进行中任务数” +2. 目标表选择:任务分配表 +3. 汇总字段选择:任务 ID +4. 筛选条件设置: + - 字段:负责人 → 条件:等于 → 值:当前表的员工字段 + - 字段:任务状态 → 条件:等于 → 值:“进行中” +5. 聚合函数选择:全计数 + +**已完成任务数** + +1. 再次新建条件汇总字段,标题设为“已完成任务数” +2. 目标表选择:任务分配表 +3. 汇总字段选择:任务 ID +4. 筛选条件设置: + - 字段:负责人 → 条件:等于 → 值:当前表的员工字段 + - 字段:任务状态 → 条件:等于 → 值:“已完成” +5. 聚合函数选择:全计数 + +### 查找重复值 + +查找重复值 + +**数据表** + +- 客户表(包含客户名称、联系电话等字段) + +在客户表中查找重复客户名称,合并客户资料前先确认重复情况。 + +**操作步骤** + +1. 在客户表中新建条件汇总字段,标题设为“客户名称重复次数” +2. 目标表选择:客户表(本表) +3. 汇总字段选择:客户名称 +4. 筛选条件设置: + - 字段:客户名称 → 条件:等于 → 值:当前表的客户名称字段 +5. 聚合函数选择:全计数 +6. 新建公式字段,标题设为“重复标记” +7. 公式设置:`IF(客户名称重复次数 > 1, "重复", BLANK())` + +客户表中会显示每个客户名称的出现次数,并在重复记录旁显示“重复”标记,后续可以筛选重复记录并逐条处理。 + +## 常见问题 + + + + 条件汇总返回单个计算值,适合看总数、金额或平均值;条件查找返回符合条件的原始值列表,适合查看明细数据。 + + diff --git a/zh/basic/field/created-by.mdx b/zh/basic/field/created-by.mdx new file mode 100644 index 00000000..051c7bde --- /dev/null +++ b/zh/basic/field/created-by.mdx @@ -0,0 +1,41 @@ +--- +title: "创建人" +description: "用于自动记录每条记录的创建者,无需手动录入。" +--- + +创建人字段会自动记录每条记录最初由谁创建。字段值由系统生成,适合做责任追溯、来源分析和个性化筛选。 + +## 适用场景 + +| 场景 | 适合内容 | +| --- | --- | +| 来源追溯 | 查看记录最初由哪位成员创建 | +| 工作量统计 | 按创建人分组,统计成员新增记录数量 | +| 个人视图 | 用“当前用户”筛选出自己创建的记录 | +| 责任定位 | 数据异常时,快速找到记录初始来源 | + +## 创建和设置 + + + + 点击表头右侧的 `+` 图标,在字段类型列表中选择 **创建人**。 + + + 输入字段名称,比如“提交人”或“登记人”。 + + + 字段添加后,会自动显示记录的初始创建者头像和昵称。 + + + +## 常见用法 + +- **工作量统计**:基于“创建人”字段分组,查看每位成员创建了多少条记录。 +- **异常追溯**:发现数据异常时,查看创建人字段,定位记录的初始来源。 +- **个人工作台**:设置筛选条件:`创建人` `是` `当前用户`。 + +## 注意事项 + +- 创建人只记录 **第一次** 创建记录的人。后续无论谁修改内容,该字段都不会变化。 +- 如果需要追踪最后一次修改记录的人,请使用 **修改人** 字段。 +- 通过 Excel/CSV 批量导入的数据,创建人通常会记录为执行导入操作的用户。 diff --git a/zh/basic/field/created-time.mdx b/zh/basic/field/created-time.mdx new file mode 100644 index 00000000..db39d805 --- /dev/null +++ b/zh/basic/field/created-time.mdx @@ -0,0 +1,48 @@ +--- +title: "创建时间" +description: "用于自动记录每条记录最初创建的时间。" +--- + +创建时间字段会自动记录每条记录最初生成的时间。字段值由系统写入,适合按创建时间排序、筛选和统计。 + +## 适用场景 + +| 场景 | 适合内容 | +| --- | --- | +| 新增记录追踪 | 查看记录是什么时候创建的 | +| 最新记录排序 | 按创建时间降序排列,优先处理最新数据 | +| 周期统计 | 筛选本周、本月或指定时间段新增的数据 | +| 只读时间戳 | 记录不可手动修改的创建时间 | + +## 创建和设置 + + + + 点击表头右侧的 `+` 图标,在字段类型列表中选择 **创建时间**。 + + + 输入字段名称,比如“提交时间”或“登记日期”。 + + + 字段添加后,会自动写入现有记录的创建时间,并对未来新增记录生效。 + + + +## 显示格式 + +| 设置 | 说明 | +| --- | --- | +| 日期格式 | 控制日期显示样式,适配不同业务规范 | +| 时间格式 | 可以显示时间、隐藏时间,或选择 12 小时制 / 24 小时制 | +| 时区设置 | 可以跟随查看者系统时区,也可以指定固定时区 | + +## 常见用法 + +- **最新动态优先展示**:按“创建时间”字段降序排列,让最新创建的记录置顶。 +- **周期性数据统计**:筛选条件设置为 `创建时间` `是` `本月`,查看本月新增数据。 + +## 注意事项 + +- 创建时间是只读字段,不支持手动修改。 +- 通过 Excel/CSV 导入数据时,新记录的创建时间通常为导入时间。 +- 如果需要手动记录业务日期,请使用 **日期** 字段。 diff --git a/zh/basic/field/date.mdx b/zh/basic/field/date.mdx new file mode 100644 index 00000000..0b5c29c4 --- /dev/null +++ b/zh/basic/field/date.mdx @@ -0,0 +1,57 @@ +--- +title: "日期" +description: "用于记录日期和时间,支持日期格式、时间格式、时区和自动填入当前时间。" +--- + +日期字段用于记录具体日期或时间点,比如项目截止日、会议时间、员工入职日期。它可以只显示日期,也可以精确到具体时间,比如 `2025-11-03 14:30`。 + +## 适用场景 + +| 场景 | 适合内容 | +| --- | --- | +| 项目排期 | 任务开始时间、截止时间、里程碑日期 | +| 活动安排 | 会议、活动、预约、发布计划 | +| 人员和合同记录 | 入职日期、签约日期、到期日期 | +| 周期统计 | 按周、月、季度筛选和统计数据 | + +## 创建和设置 + + + + 在表格视图中点击添加字段,并选择 **日期**。 + + + 输入字段名称,比如“截止日期”、“会议时间”或“入职日期”。 + + + 按需设置日期格式、是否包含时间、时间格式和时区。 + + + 如果新记录需要自动带上当前时间,可以开启自动填入当前时间。 + + + +## 日期字段选项 + +| 选项 | 说明 | +| --- | --- | +| 包含时间 | 除了日期,也可以记录具体时间 | +| 日期格式 | 控制日期显示样式,比如 `YYYY-MM-DD`、`DD/MM/YYYY`、`MM/DD/YYYY`、`D MMM YYYY` | +| 时间格式 | 控制是否显示时间,以及使用 12 小时制或 24 小时制 | +| 时区 | 指定日期和时间使用的时区,适合跨时区团队协作 | +| 自动填入当前时间 | 新记录创建时自动填入当前时间 | + +更多格式请参阅[格式化](/zh/basic/field/common/formatter)。 + +## 常见用法 + +- **任务排期**:记录开始日期和截止日期,再按截止日期排序或筛选。 +- **活动规划**:记录会议和活动时间,避免遗漏重要安排。 +- **周期统计**:按日期筛选本周、本月或指定时间段的数据。 +- **日期计算**:在公式字段中引用日期字段,计算两个日期之间的间隔。 + +## 注意事项 + + +如果需要记录“这条数据是什么时候创建的”,并且不允许手动修改,请使用 **[创建时间](/zh/basic/field/created-time)** 字段。 + diff --git a/zh/basic/field/formula.mdx b/zh/basic/field/formula.mdx new file mode 100644 index 00000000..947ae3ee --- /dev/null +++ b/zh/basic/field/formula.mdx @@ -0,0 +1,93 @@ +--- +title: "公式" +description: "通过公式字段引用其他字段,并对文本、数字、日期和逻辑条件进行动态计算。" +--- + +公式字段用于根据同一条记录里的其他字段自动计算结果。它可以处理数学运算、文本拼接、日期计算和条件判断,适合把重复计算规则固化到字段中。 + +## 适用场景 + +| 场景 | 适合内容 | +| --- | --- | +| 自动计算 | 根据数量、单价、折扣等字段计算总价、利润或得分 | +| 文本处理 | 拼接文本、截取内容,或按分隔符提取信息 | +| 日期处理 | 计算日期差、判断时间范围,或生成未来日期 | +| 条件判断 | 根据条件返回不同结果,比如状态、提示或分类 | + +## 基础概念 + +### 数据类型 + +编写公式前,先确认参与计算的字段类型。不同类型支持的操作和函数不同。 + +| 类型 | 说明 | 常见用法 | +| --- | --- | --- | +| 数字 | 整数或小数 | 四则运算、汇总、比较大小 | +| 文本 | 字符串值 | 拼接、截取、替换、分割 | +| 日期 | 日期或日期时间 | 计算间隔、比较早晚 | +| 布尔值 | `TRUE` 或 `FALSE` | 条件判断、逻辑运算 | + +### 引用字段 + +在公式中,可以通过字段名称引用其他字段的值。字段名称需要写在 `{}` 中,并与实际字段名保持一致: + +```js +{单价} * {数量} +``` + +### 运算符 + +| 运算符 | 用途 | +| --- | --- | +| `+` | 计算数值的和,或连接字符串 | +| `-` | 计算数值的差 | +| `*` | 计算数值的积 | +| `/` | 计算数值的商 | +| `%` | 计算余数 | + +## 常用写法 + +### 常用函数 + +函数用于执行特定操作。比如 `SUM` 计算总和,`LEFT` 从文本开头提取字符,`TEXTBEFORE` 按分隔符提取前半段文本,`TEXTSPLIT` 按分隔符拆分文本。 + +更多函数请参阅[函数速查表](/zh/basic/field/formula/cheat-sheet)。 + +### 文本处理 + +| 操作 | 函数示例 | 说明 | +| --- | --- | --- | +| 连接文本 | `&`、`CONCATENATE` | 将两个或多个文本连接起来 | +| 提取文本 | `LEFT`、`RIGHT`、`MID`、`TEXTBEFORE` | 提取字符串的一部分 | +| 拆分文本 | `TEXTSPLIT` | 按指定分隔符拆成多个值 | + +### 逻辑判断 + +`IF` 函数可以根据条件返回不同值。格式如下: + +```js +IF(condition, value_if_true, value_if_false) +``` + +判断字段是否为空时,建议使用 `BLANK()` 进行比较。比如 `IF({重量}=BLANK(), 1, 2)` 会在数字字段为空时返回 `1`,否则返回 `2`。 + +### 复杂表达式 + +复杂公式可以同时包含多个函数、字段引用和运算符。使用括号可以控制计算顺序: + +```js +({单价} * {数量}) * (1 - {折扣}) +``` + +## 结果显示与维护 + +### 格式化和交互展现 + +公式结果也可以继续使用[格式化](/zh/basic/field/common/formatter)和[交互展现](/zh/basic/field/common/show-as)配置,比如显示为百分比、进度条或图标样式。可配置项会根据公式结果类型变化。 + +### 调试与优化 + +- **检查数据类型**:确认操作和函数使用了正确的数据类型。 +- **验证字段引用**:确认字段名称写法正确。 +- **逐步检查**:把复杂公式拆成较小的部分分别测试。 +- **避免重复计算**:如果同一个计算会在多处使用,可以考虑把结果保存为单独字段。 diff --git a/zh/basic/field/advanced/formula/cheat-sheet.mdx b/zh/basic/field/formula/cheat-sheet.mdx similarity index 74% rename from zh/basic/field/advanced/formula/cheat-sheet.mdx rename to zh/basic/field/formula/cheat-sheet.mdx index d1d64f0a..3a0dda7a 100644 --- a/zh/basic/field/advanced/formula/cheat-sheet.mdx +++ b/zh/basic/field/formula/cheat-sheet.mdx @@ -1,12 +1,14 @@ --- title: "函数速查表" -description: "该章节提供了函数速查表,你可以在这里快速搜索所有的可用函数以及他们的基础使用方法" +description: "用于快速查找公式函数、参数、输出类型和基础用法。" mode: "wide" --- -### 数值函数 +函数速查表用于快速查找可用函数、参数、输出类型和示例。编写公式时,可以按函数类别定位需要的函数。 -此章节提供了常见的数值处理函数,包括数学运算、统计计算等。 +## 数值函数 + +数值函数用于数学运算、统计计算和数字格式处理。 | 函数名称 | 描述 | 输入 | 输出 | 示例 | | --------- | -------------------------------------------------------------- | ------------------------- | ------ | -------------------------------------------------------------------------------------- | @@ -14,7 +16,7 @@ mode: "wide" | AVERAGE | 返回数字的平均值。 | `number1, [number2, ...]` | Number | `AVERAGE(100, 200, 300) => 200` | | MAX | 返回给定数字中的最大值。 | `number1, [number2, ...]` | Number | `MAX(100, 200, 300) => 300` | | MIN | 返回给定数字中的最小值。 | `number1, [number2, ...]` | Number | `MIN(100, 200, 300) => 100` | -| ROUND | 根据 "precision" 给出的小数位数四舍五入该值。 | `value, [precision]` | Number | `ROUND(1.99, 0) => 2` `ROUND(16.8, -1) => 20` | +| ROUND | 按 `precision` 指定的小数位数四舍五入。 | `value, [precision]` | Number | `ROUND(1.99, 0) => 2` `ROUND(16.8, -1) => 20` | | ROUNDUP | 总是向上四舍五入,即远离零。 | `value, [precision]` | Number | `ROUNDUP(1.1, 0) => 2` `ROUNDUP(-1.1, 0) => -2` | | ROUNDDOWN | 总是向下四舍五入,即朝向零。 | `value, [precision]` | Number | `ROUNDDOWN(1.9, 0) => 1` `ROUNDDOWN(-1.9, 0) => -1` | | CEILING | 返回大于或等于该值的最接近的整数倍数。 | `value, [significance]` | Number | `CEILING(2.49) => 3` `CEILING(2.49, 1) => 2.5` | @@ -25,22 +27,22 @@ mode: "wide" | ABS | 返回绝对值。 | `value` | Number | `ABS(-1) => 1` | | SQRT | 返回非负数的平方根。 | `value` | Number | `SQRT(4) => 2` | | POWER | 计算指定的基数到指定的功率。 | `value` | Number | `POWER(2) => 4` | -| EXP | 计算Euler数(e)到指定的功率。 | `value` | Number | `EXP(0) => 1` `EXP(1) => 2.718` | -| LOG | 在提供的基数中计算值的对数。如果未指定,基数默认为10。 | `value, [base=10]` | Number | `LOG(100) => 2` `LOG(1024, 2) => 10` | +| EXP | 计算欧拉数(e)的指定次幂。 | `value` | Number | `EXP(0) => 1` `EXP(1) => 2.718` | +| LOG | 按指定基数计算值的对数。如果未指定,基数默认为 10。 | `value, [base=10]` | Number | `LOG(100) => 2` `LOG(1024, 2) => 10` | | MOD | 返回将第一个参数除以第二个后的余数。 | `value, divisor` | Number | `MOD(9, 2) => 1` `MOD(9, 3) => 0` | | VALUE | 将文本字符串转换为数字。 | `text` | Number | `VALUE("$1,000,000") => 1000000` | -### 文本函数 +## 文本函数 -在这里,您会找到有关文本处理的常用函数,如字符串操作、格式化等。 +文本函数用于连接、查找、替换、截取和拆分字符串。 | 函数名称 | 描述 | 输入 | 输出 | 示例 | | ---------------------- | ------------------------------------------------------------ | -------------------------------------------------- | ------------- | --------------------------------------------------------------------------- | | CONCATENATE | 连接多种值类型参数为单一文本值。 | `text1, [text2, ...]` | Text | `CONCATENATE("Hello ", "Teable") => Hello Teable` | | FIND | 在指定文本中查找子字符串的位置。如果未找到子字符串,则结果为 0。 | `stringToFind, whereToSearch, [startFromPosition]` | Number | `FIND("Teable", "Hello Teable") => 7` | -| SEARCH | 在指定文本中查找子字符串的位置。如果未找到子字符串,则结果为空。与FIND函数类似,但当未找到子字符串时FIND返回0。 | `stringToFind, whereToSearch, [startFromPosition]` | Text or Empty | `SEARCH("Teable", "Hello Teable") => 7` | +| SEARCH | 在指定文本中查找子字符串的位置。与 `FIND` 类似,但未找到子字符串时返回空值。 | `stringToFind, whereToSearch, [startFromPosition]` | Text or Empty | `SEARCH("Teable", "Hello Teable") => 7` | | MID | 提取从指定位置开始的指定数量的子字符串。 | `text, whereToStart, count` | Text | `MID("Hello Teable", 6, 6) => "Teable"` | | LEFT | 提取字符串开始的指定数量的字符。 | `text, count` | Text | `LEFT("2023-09-06", 4) => "2023"` | | RIGHT | 提取字符串结束的指定数量的字符。 | `text, count` | Text | `RIGHT("2023-09-06", 5) => "09-06"` | @@ -55,17 +57,17 @@ mode: "wide" | TRIM | 去除字符串开始和结束的空白字符。 | `text` | Text | `TRIM(" Hello ") => "Hello"` | | LEN | 计算字符串的字符数。 | `text` | Number | `LEN("Hello") => 5` | | T | 如果参数是文本,则返回该参数,否则返回空。 | `value` | Text or Empty |

T("Hello") => "Hello"

T(100) => null

| -| ENCODE\_URL\_COMPONENT | 为构造URL或URI替换某些字符为编码等效项。不会编码以下字符:- \_ . \~ | `value` | Text | `ENCODE_URL_COMPONENT("Hello Teable") => "Hello%20Teable"` | +| ENCODE\_URL\_COMPONENT | 为构造 URL 或 URI,把部分字符替换为编码等效项。不会编码以下字符:- \_ . \~ | `value` | Text | `ENCODE_URL_COMPONENT("Hello Teable") => "Hello%20Teable"` | -### 逻辑函数 +## 逻辑函数 -逻辑函数主要涉及条件判断和逻辑运算。本章节将详细介绍如`IF`, `AND`, `OR`等函数的使用。 +逻辑函数用于条件判断和逻辑运算,比如 `IF`、`AND`、`OR`。 | 函数名称 | 描述 | 输入 | 输出 | 示例 | | --------- | ------------------------------------------------------------------------------------------ | --------------------------------------------- | --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | -| IF | 如果逻辑参数为真,则返回`value1`,否则返回`value2`。还可用于制作嵌套的IF语句,以及检查单元格是否为空。 | `logical, value1, value2` | String \| Number \| Boolean \| Datetime | `IF(2 > 1, "A", "B") => "A"` `IF(2 > 1, TRUE, FALSE) => TRUE` | -| SWITCH | 根据输入的表达式,从一系列可能的值中匹配,并返回相对应的结果。如果输入的表达式与定义的模式都不匹配,则可以返回一个默认值。在许多情况下,SWITCH()可以代替嵌套的IF()公式。 | `expression, [pattern, result]..., [default]` | String \| Number \| Boolean \| Datetime | `SWITCH("B", "A", "Value A", "B", "Value B", "Default Value") => "Value B"` | +| IF | 如果逻辑参数为真,则返回 `value1`,否则返回 `value2`。也可用于嵌套判断和检查单元格是否为空。 | `logical, value1, value2` | String \| Number \| Boolean \| Datetime | `IF(2 > 1, "A", "B") => "A"` `IF(2 > 1, TRUE, FALSE) => TRUE` | +| SWITCH | 根据输入表达式匹配一组可能的值,并返回对应结果。没有匹配项时,可以返回默认值。很多情况下可替代嵌套 `IF`。 | `expression, [pattern, result]..., [default]` | String \| Number \| Boolean \| Datetime | `SWITCH("B", "A", "Value A", "B", "Value B", "Default Value") => "Value B"` | | AND | 如果所有参数都为真,则返回真;否则返回假。 | `logical1, [logical2, ...]` | Boolean | `AND(1 < 2, 5 > 3) => true` `AND(1 < 2, 5 < 3) => false` | | OR | 如果任意一个参数为真,则返回真。 | `logical1, [logical2, ...]` | Boolean | `OR(1 < 2, 5 < 3) => true` `OR(1 > 2, 5 < 3) => false` | | XOR | 如果有奇数个参数为真,则返回真。 | `logical1, [logical2, ...]` | Boolean | `XOR(1 < 2, 5 < 3, 8 < 10) => false` `XOR(1 > 2, 5 < 3, 8 < 10) => true` | @@ -76,9 +78,9 @@ mode: "wide" -### 日期函数 +## 日期函数 -日期函数帮助用户处理和转换日期和时间数据。此部分涵盖了日期的增加、减少、格式化等操作。 +日期函数用于处理和转换日期时间,比如获取当前日期、计算日期差、判断日期先后。 | 函数名称 | 描述 | 输入 | 输出 | 示例 | | -------------- | ------------------------------------------------------ | ---------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ | @@ -87,30 +89,30 @@ mode: "wide" | YEAR | 返回日期的四位数字年份。 | `date` | Number | `YEAR("2023-09-08") => 2023` | | MONTH | 返回日期的月份,作为1(1月)到12(12月)之间的数字。 | `date` | Number | `MONTH("2023-09-08") => 9` | | WEEKNUM | 返回年份中的周数。 | `date` | Number | `WEEKNUM("2023-09-08") => 36` | -| WEEKDAY | 返回周中的天数作为0到6之间的整数。您可以选择性地提供第二个参数(“星期日”或“星期一”)以在该天开始一周。 | `date, [startDayOfWeek]` | Number | `WEEKDAY("2023-09-08", "Monday") => 5` | +| WEEKDAY | 返回一周中的第几天,结果为0到6之间的整数。可以提供第二个参数(“星期日”或“星期一”)指定一周从哪一天开始。 | `date, [startDayOfWeek]` | Number | `WEEKDAY("2023-09-08", "Monday") => 5` | | DAY | 返回日期的月份中的日期,作为1-31之间的数字。 | `date` | Number | `DAY("2023-09-08") => 8` | | HOUR | 返回日期的小时数,作为0(12:00am)到23(11:00pm)之间的数字。 | `date` | Number | `HOUR("2023-09-08 16:50") => 16` | | MINUTE | 返回日期的分钟,作为0到59之间的整数。 | `date` | Number | `MINUTE("2023-09-08 16:50") => 50` | | SECOND | 返回日期的秒数,作为0到59之间的整数。 | `date` | Number | `SECOND("2023-09-08 16:50:30") => 30` | | FROMNOW | 计算当前日期与另一个日期之间的天数。 | `date, unit` | Number | `FROMNOW({Date}, "day") => 25` | | TONOW | 计算当前日期与另一个日期之间的天数。 | `date, unit` | Number | `TONOW({Date}, "day") => 25` | -| DATETIME\_DIFF | 返回指定单位的日期时间差异。默认单位是秒。(请参阅单位说明符列表。) | `date1, date2, [unit]` | Number | `DATETIME_DIFF("2022-08-01", "2023-09-08", "day") => 403` | -| WORKDAY | 返回到开始日期的工作日,不包括指定的假期 | `date, count, [holidayStr]` | Datetime | `WORKDAY("2023-09-08", 200) => "2024-06-14 00:00:00"` | -| WORKDAY\_DIFF | 返回日期1和日期2之间的工作日数。工作日不包括周末和可选的假日列表,格式为ISO格式的日期的逗号分隔字符串。 | `date1, date2, [holidayStr]` | Number | `WORKDAY_DIFF("2023-06-18", "2023-10-01") => 75` | -| IS\_SAME | 比较两个日期到一个单位并确定它们是否相同。如果是,则返回true,否则返回false。 | `date1, date2, [unit]` | Boolean | `IS_SAME("2023-09-08", "2023-09-10") => false` | -| IS\_AFTER | 确定date1是否晚于date2。如果是,则返回true,否则返回false。 | `date1, date2, [unit]` | Boolean | `IS_AFTER("2023-09-10", "2023-09-08") => true` `IS_AFTER("2023-09-10", "2023-09-08", "month") => false` | +| DATETIME\_DIFF | 返回指定单位的日期时间差异,默认单位是秒。 | `date1, date2, [unit]` | Number | `DATETIME_DIFF("2022-08-01", "2023-09-08", "day") => 403` | +| WORKDAY | 返回从开始日期起算的工作日,不包括指定假期。 | `date, count, [holidayStr]` | Datetime | `WORKDAY("2023-09-08", 200) => "2024-06-14 00:00:00"` | +| WORKDAY\_DIFF | 返回 `date1` 和 `date2` 之间的工作日数。工作日不包括周末和可选假日列表,假日列表使用 ISO 日期并用逗号分隔。 | `date1, date2, [holidayStr]` | Number | `WORKDAY_DIFF("2023-06-18", "2023-10-01") => 75` | +| IS\_SAME | 按指定单位比较两个日期是否相同。相同返回 `true`,否则返回 `false`。 | `date1, date2, [unit]` | Boolean | `IS_SAME("2023-09-08", "2023-09-10") => false` | +| IS\_AFTER | 判断 `date1` 是否晚于 `date2`。如果是,返回 `true`,否则返回 `false`。 | `date1, date2, [unit]` | Boolean | `IS_AFTER("2023-09-10", "2023-09-08") => true` `IS_AFTER("2023-09-10", "2023-09-08", "month") => false` | -### 数组和其他函数 +## 数组和其他函数 -除了上述分类的函数,本章节还会介绍一些处理数组或其他特定数据类型的函数。 +数组和其他函数用于处理汇总数组、去重、合并、清理空值,以及获取记录 ID。 | 函数名称 | 描述 | 输入 | 输出 | 示例 | | -------------- | ------------------------------------------- | ----------------------- | ------ | ----------------------------------------------------------------------------- | | COUNTALL | 返回所有元素的数量,包括文本和空白。 | `value1, [value2, ...]` | Number | `COUNTALL(100, 200, "", "Teable", TRUE()) => 5` | | COUNTA | 返回非空值的数量。此函数既计算数字又计算文本值。 | `value1, [value2, ...]` | Number | `COUNTA(100, 200, 300, "", "Teable", TRUE) => 4` | | COUNT | 返回数字项的数量。 | `value1, [value2, ...]` | Number | `COUNT(100, 200, 300, "", "Teable", TRUE) => 3` | -| ARRAY\_JOIN | 使用分隔符将rollup项的数组连接成一个字符串。 | `array, [separator]` | String | `ARRAY_JOIN(["Tom", "Jerry", "Mike"], "; ") => "Tom; Jerry; Mike"` | +| ARRAY\_JOIN | 使用分隔符将汇总项数组连接成一个字符串。 | `array, [separator]` | String | `ARRAY_JOIN(["Tom", "Jerry", "Mike"], "; ") => "Tom; Jerry; Mike"` | | ARRAY\_UNIQUE | 返回数组中仅有的唯一项。 | `array` | Array | `ARRAY_UNIQUE([1, 2, 3, 2, 1]) => [1, 2, 3]` | -| ARRAY\_FLATTEN | 通过删除任何数组嵌套来展平数组。所有项目成为单个数组的元素。 | `array` | Array | `ARRAY_FLATTEN([1, 2, " ", 3, true], ["ABC"]) => [1, 2, 3, " ", true, "ABC"]` | -| ARRAY\_COMPACT | 从数组中删除空字符串和null值。保留"false"和包含一个或多个空白字符的字符串。 | `array` | Array | `ARRAY_COMPACT([1, 2, 3, "", null, "ABC"]) => [1, 2, 3, "ABC"]` | -| RECORD\_ID | 返回当前记录的ID。 | `-` | String | `RECORD_ID() => "recxxxxxx"` | +| ARRAY\_FLATTEN | 展平嵌套数组,让所有项目成为单个数组的元素。 | `array` | Array | `ARRAY_FLATTEN([1, 2, " ", 3, true], ["ABC"]) => [1, 2, 3, " ", true, "ABC"]` | +| ARRAY\_COMPACT | 从数组中删除空字符串和 `null` 值。保留 `false` 和包含空白字符的字符串。 | `array` | Array | `ARRAY_COMPACT([1, 2, 3, "", null, "ABC"]) => [1, 2, 3, "ABC"]` | +| RECORD\_ID | 返回当前记录的 ID。 | `-` | String | `RECORD_ID() => "recxxxxxx"` | diff --git a/zh/basic/field/formula/grammar.mdx b/zh/basic/field/formula/grammar.mdx new file mode 100644 index 00000000..7d9e273f --- /dev/null +++ b/zh/basic/field/formula/grammar.mdx @@ -0,0 +1,39 @@ +--- +title: "公式语法" +--- + +公式语法由基础值、字段引用、操作符、函数和括号组成。理解这些元素后,就可以编写计算、判断和文本处理公式。 + +## 基础元素 + +| 元素 | 写法 | 说明 | +| --- | --- | --- | +| 字符串 | `'Hello'` 或 `"World"` | 用单引号或双引号包围的文本 | +| 整数 | `123`、`-456` | 不带小数点的数字 | +| 小数 | `12.34`、`-45.67` | 带小数点的数字 | +| 布尔值 | `TRUE`、`FALSE` | 表示真或假 | +| 字段引用 | `{age}` | 用 `{}` 包围字段名,字段名需要和实际字段一致 | + +## 操作符 + +公式中的操作符用于连接或比较值: + +| 类型 | 操作符 | +| --- | --- | +| 数学运算 | `+`、`-`、`*`、`/`、`%` | +| 比较运算 | `>`、`<`、`>=`、`<=`、`=`、`!=` | +| 逻辑运算 | `&&`、`||` | + +## 函数调用 + +公式中可以调用函数。函数由函数名、一对括号和括号内的参数组成,参数之间用逗号分隔。 + +比如 `sum(1, 2, 3)` 调用了 `sum` 函数,并传入三个参数:1、2 和 3。 + +## 其他结构 + +| 结构 | 说明 | +| --- | --- | +| 括号 | 改变运算优先级,比如 `(1 + 2) * 3` | +| 注释 | 添加上下文信息。块注释使用 `/* */`,行注释使用 `//` | +| 空白和换行 | 通常会被忽略,但可以提高公式可读性 | diff --git a/zh/basic/field/last-modified-by.mdx b/zh/basic/field/last-modified-by.mdx new file mode 100644 index 00000000..0671d51d --- /dev/null +++ b/zh/basic/field/last-modified-by.mdx @@ -0,0 +1,41 @@ +--- +title: "修改人" +description: "用于自动记录最后一次修改记录的用户。" +--- + +修改人字段会自动记录最后一次编辑记录的用户。它适合追踪协作修改来源,配合修改时间字段可以定位是谁在什么时候做了最后一次更新。 + +## 适用场景 + +| 场景 | 适合内容 | +| --- | --- | +| 协作追踪 | 查看记录最后由哪位成员更新 | +| 责任沟通 | 记录异常时,快速找到最近修改人 | +| 个人复盘 | 筛选自己最近更新过的记录 | +| 搭配修改时间 | 同时定位最后修改者和最后修改时间 | + +## 创建和设置 + + + + 点击表头右侧的 `+` 图标,在字段类型列表中选择 **修改人**。 + + + 输入字段名称,比如“最后编辑者”或“更新人”。 + + + 字段创建后,当记录被修改时,修改人字段会自动更新为当前操作用户。 + + + +## 常见用法 + +- **协作责任追溯**:发现任务状态被改为“已取消”时,查看修改人字段,确认最后操作成员。 +- **跟进动态复盘**:设置筛选条件:`修改人` `是` `当前用户`,查看自己最近经手过的记录。 +- **搭配修改时间**:同时查看 **修改人** 和 **修改时间**,确认最后一次更新发生的时间和操作者。 + +## 注意事项 + +- 修改人字段会在记录内容发生变化时自动更新。 +- 该字段是只读字段,不支持手动选择或修改。 +- 如果只需要记录最初创建者,请使用 **创建人** 字段。 diff --git a/zh/basic/field/last-modified-time.mdx b/zh/basic/field/last-modified-time.mdx new file mode 100644 index 00000000..ff0204b7 --- /dev/null +++ b/zh/basic/field/last-modified-time.mdx @@ -0,0 +1,59 @@ +--- +title: "修改时间" +description: "用于自动记录记录最后一次被编辑的时间。" +--- + +修改时间字段会自动记录记录最后一次被编辑的时间。它可以追踪所有字段,也可以只追踪指定字段,适合查看最新更新、清理长期未维护数据和复盘协作进展。 + +## 适用场景 + +| 场景 | 适合内容 | +| --- | --- | +| 最近更新 | 按修改时间排序,查看最近发生变化的记录 | +| 指定字段追踪 | 只在关键字段变化时更新时间,减少无关改动干扰 | +| 沉睡数据清理 | 筛选长期未更新的记录,进行清理或重新分配 | +| 协作复盘 | 搭配修改人字段,定位最后一次更新的时间和操作者 | + +## 创建和设置 + + + + 点击表头右侧的 `+` 图标,在字段类型列表中选择 **修改时间**。 + + + 输入字段名称,比如“最后更新时间”或“最近维护”。 + + + 选择追踪所有字段,或只追踪指定字段。 + + + 按需设置日期格式、时间格式和时区。 + + + +## 追踪配置 + +| 配置 | 说明 | +| --- | --- | +| 追踪所有字段 | 记录中任意字段发生修改,修改时间都会更新 | +| 指定字段追踪 | 只有选定字段发生变化时,修改时间才会更新 | + +## 显示格式 + +| 设置 | 说明 | +| --- | --- | +| 日期格式 | 选择日期显示样式,比如 `2024-01-30` 或 `2024年1月30日` | +| 时间格式 | 控制是否显示具体时间,并选择 12 小时制或 24 小时制 | +| 时区设置 | 可以指定固定时区,也可以跟随查看者系统时区 | + +## 常见用法 + +- **查找最近更新的任务**:按“修改时间”降序排列,把最近发生变动的记录放在最上方。 +- **追踪核心内容变更**:选择 **指定字段追踪**,只勾选“标题”和“状态”等关键字段。 +- **清理沉睡数据**:设置筛选条件:`修改时间` `早于` `90 天前`,找出长期未维护的记录。 + +## 注意事项 + +- 修改时间是只读字段,不支持手动修改。 +- 如果开启指定字段追踪,未被选中的字段变化不会更新时间。 +- 如果需要记录记录最初创建时间,请使用 **创建时间** 字段。 diff --git a/zh/basic/field/link.mdx b/zh/basic/field/link.mdx new file mode 100644 index 00000000..b5fb636f --- /dev/null +++ b/zh/basic/field/link.mdx @@ -0,0 +1,60 @@ +--- +title: "关联" +description: "用于在不同数据表之间建立关系,并在当前记录中选择另一张表的记录。" +--- + +关联字段用于连接两张表。通过关联字段,可以在当前表中选择另一张表的记录,并快速跳转查看。关联也是使用 **查找** 和 **汇总** 字段的前提。 + +## 适用场景 + +| 场景 | 适合内容 | +| --- | --- | +| 客户和订单 | 在订单表中关联客户,在客户表中查看对应订单 | +| 项目和任务 | 在任务表中关联项目,在项目表中查看下属任务 | +| 学生和课程 | 记录学生选课、成员参与多个项目等多对多关系 | +| 明细和主记录 | 将订单明细关联到订单,再查找价格或汇总金额 | + +## 创建和设置 + + + + 在当前表中点击添加字段,选择 **关联** 类型。 + + + 在配置窗口中选择要关联的表,比如在“订单表”中关联“客户表”。 + + + 按需设置单向或双向关联。 + + + 通过 **允许多选** 和 **允许重复值** 配置一对一、一对多、多对一或多对多关系。 + + + +## 单向和双向关联 + +| 模式 | 说明 | 适合场景 | +| --- | --- | --- | +| 双向关联 | 默认开启。创建关联字段时,会在目标表中自动创建对应的关联字段,两边数据实时同步 | 订单和客户、项目和任务等需要双向查看的关系 | +| 单向关联 | 关闭双向开关后,仅在当前表显示关联信息,目标表不显示反向字段 | 只需要单方面引用数据,不希望改动目标表结构 | + +## 关系类型 + +通过组合 **允许多选** 和 **允许重复值** 两个开关,可以定义四种常见关系: + +| 关系模型 | 业务场景示例 | 配置方式 | +| :--- | :--- | :--- | +| **一对一 (1:1)** | **员工 - 档案**
一个员工只能有一份档案,一份档案也只属于一个员工 | ☐ 允许多选
☐ 允许重复值
*(两个开关均关闭)* | +| **一对多 (1:N)** | **部门 - 员工**
一个部门包含多个员工,但一个员工只属于一个部门 | ☑ 允许多选
☐ 允许重复值
*(仅开启允许多选)* | +| **多对一 (N:1)** | **任务 - 项目**
多个任务属于同一个项目,但一个任务只能属于一个项目 | ☐ 允许多选
☑ 允许重复值
*(仅开启允许重复值)* | +| **多对多 (N:N)** | **学生 - 课程**
一个学生选修多门课,一门课也有多个学生上 | ☑ 允许多选
☑ 允许重复值
*(两个开关均开启)* | + +## 常见用法 + +- **CRM 客户管理**:在 `公司表` 中创建关联字段指向 `联系人表`,一家公司可以关联多个联系人。 +- **项目任务分配**:在 `任务表` 中创建关联字段指向 `项目表`,每个任务只归属一个项目,项目表中可以查看下属任务。 +- **订单明细管理**:在 `订单表` 中关联 `商品表`,后续可通过查找字段引用商品价格,通过汇总字段计算订单总额。 + +## 注意事项 + +- **一对多限制**:在严格的一对多关系下,B 表侧关闭多选后,一旦 B 表的某条记录被 A 表某条记录关联,它就不能再被 A 表其他记录选择。这适合身份证号、员工档案等不能被重复占用的数据。 diff --git a/zh/basic/field/long-text.mdx b/zh/basic/field/long-text.mdx new file mode 100644 index 00000000..b495b651 --- /dev/null +++ b/zh/basic/field/long-text.mdx @@ -0,0 +1,56 @@ +--- +title: "多行文本" +description: "用于存储需要换行的长文本,支持普通文本和 Markdown 两种显示方式。" +--- + +多行文本适合存放需要换行的长内容,比如备注、说明、日志、会议纪要或详细描述。与单行文本不同,多行文本可以保留段落结构,也可以切换为 Markdown 显示。 + +## 适用场景 + +| 场景 | 适合内容 | +| --- | --- | +| 详细描述 | 任务详情、产品说明、Bug 复现步骤 | +| 过程记录 | 客户跟进、每日总结、会议纪要 | +| 补充说明 | 不适合拆成多个字段的备注或说明 | +| 内容草稿 | 文案、公告、知识库片段等较长文本 | + +## 创建和设置 + + + + 在表格中点击 `+`,选择字段类型 **多行文本**。 + + + 输入字段名称,比如“描述”、“备注”或“详情”。 + + + 按需设置 **默认值**、**显示方式** 和 **字段描述**。 + + + 点击 `保存` 后,即可在单元格中录入多行内容。 + + + +## 显示方式 + +| 显示方式 | 适合内容 | 说明 | +| --- | --- | --- | +| 普通文本 | 备注、日志、说明 | 保留换行,适合直接录入和阅读 | +| Markdown | 文档片段、清单、链接 | 支持用 Markdown 格式展示内容 | + +多行文本显示方式 + +## 常见用法 + +- **手动换行**:在编辑模式下,按 `Shift + 回车` 插入换行。 +- **自动折行**:单元格会根据列宽折行显示,便于阅读较长内容。 +- **默认文本**:如果每条新记录都需要相同说明,可以设置默认值。 + +## 注意事项 + +- 多行文本不支持 URL、Email 和电话这类交互展现,只支持普通文本和 Markdown。 +- 如果内容不需要换行,且希望设置 URL、Email 或电话显示方式,请使用 **单行文本** 字段。 diff --git a/zh/basic/field/lookup.mdx b/zh/basic/field/lookup.mdx new file mode 100644 index 00000000..cb9f6e2e --- /dev/null +++ b/zh/basic/field/lookup.mdx @@ -0,0 +1,51 @@ +--- +title: "查找" +description: "用于通过已有的关联关系,从关联表中引用字段值,并保持数据同步。" +--- + +查找字段建立在 **关联** 字段之上。它可以从关联表中引用指定字段的值,让当前表直接显示对方表的数据,而不需要重复录入。 + +## 适用场景 + +| 场景 | 适合内容 | +| --- | --- | +| 订单明细 | 关联商品后显示商品价格、SKU 或分类 | +| 工单处理 | 关联客户后显示联系电话、客户等级或负责人 | +| 图书管理 | 在书籍表中显示作者生日、国籍或简介 | +| 项目管理 | 从关联任务中查看负责人、截止时间或状态 | + +## 创建和设置 + + + + 使用查找字段前,需要先在两个表之间建立 **关联** 字段。 + + + 在表格视图中点击 `+` 添加字段,选择 **查找** 类型。 + + + 选择当前表中已有的关联字段,作为查找路径。 + + + 选择要从源表中获取的字段,比如作者的出生日期、客户的电话或商品价格。 + + + +## 自动同步 + +配置完成后,系统会根据已有的关联关系自动填入查找结果: + +- 如果关联记录发生变化,比如换了一个作者,查找内容会自动更新。 +- 如果源表数据发生变化,比如修改了作者生日,查找内容也会实时刷新。 + +## 常见用法 + +- **图书管理**:在 `书籍库表` 中通过 `关联作者` 查找作者详情表中的 `出生日期`。 +- **订单计算**:在 `订单明细表` 中查找商品价格,再用公式计算总价。 +- **客户信息同步**:在工单表中关联客户后,查找客户电话、邮箱或等级。 + +## 注意事项 + +- **只读属性**:查找字段是 **只读** 的,不能在当前表中直接修改。如果需要修改数据,请回到源表编辑原始字段。 +- **单值与多值**:如果关联关系是一对一,查找结果就是单一值;如果关联关系是一对多,查找结果会变成多值数组,并以逗号分隔显示。 +- **数据依赖**:查找字段依赖关联字段和源字段。如果关联字段或源表中的目标字段被删除,查找字段会失效。 diff --git a/zh/basic/field/multiple-select.mdx b/zh/basic/field/multiple-select.mdx new file mode 100644 index 00000000..3a289ff4 --- /dev/null +++ b/zh/basic/field/multiple-select.mdx @@ -0,0 +1,61 @@ +--- +title: "多选" +description: "用于从预设选项列表中选择一个或多个值,常用于标签、分类和多维度筛选。" +--- + +多选字段用于从预设选项中选择一个或多个值。它适合记录标签、主题、技能、部门等可以同时存在的分类信息。 + +## 适用场景 + +| 场景 | 适合内容 | +| --- | --- | +| 标签和主题 | 文章、视频、客户或任务的多个标签 | +| 技能和能力 | 成员掌握的多个技能或经验方向 | +| 跨部门协作 | 一个项目涉及的销售、研发、财务等部门 | +| 多维分类 | 一条记录同时属于多个主题、渠道或业务线 | + +## 创建和设置 + + + + 点击表头右侧的 `+` 图标,在字段类型列表中选择 **多选**。 + + + 输入字段名称,比如“主题”、“技能”或“涉及部门”。 + + + 在配置界面输入选项名称,按 **回车键** 即可快速添加。 + + + 按需设置默认值,也可以控制编辑时是否允许直接新增选项。 + + + +## 选项管理 + +| 设置 | 说明 | +| --- | --- | +| 颜色 | 系统会自动分配颜色,也可以点击选项左侧圆点手动调整 | +| 排序 | 拖拽选项左侧图标可调整排列顺序 | +| 默认值 | 新记录可以自动带上一组常用标签 | +| 允许新增选项 | 关闭后,编辑单元格时只能使用已有选项 | + +## 按多选结果筛选记录 + +| 筛选方式 | 说明 | +| --- | --- | +| 包含任一 | 只要选中了指定标签中的任意一个,就显示该记录 | +| 包含所有 | 必须同时选中所有指定标签,才显示该记录 | +| 完全等于 | 选项必须完全匹配,不能多也不能少 | + +## 常见用法 + +- **内容标签**:为内容项目添加“技术”、“设计”、“市场”等多个主题。 +- **人员技能**:为成员记录多个技能,后续按技能组合筛选。 +- **项目部门**:为跨部门项目记录参与部门,便于分组和统计。 + +## 注意事项 + +- 多选字段允许选择 **1 到 N** 个值,单选字段每条记录只能选择 **1** 个值。 +- 颜色用于辅助识别类别,但不要只依赖颜色表达关键含义。 +- 如果需要严格互斥的状态,请使用 **单选** 字段。 diff --git a/zh/basic/field/number.mdx b/zh/basic/field/number.mdx new file mode 100644 index 00000000..c474ab6a --- /dev/null +++ b/zh/basic/field/number.mdx @@ -0,0 +1,85 @@ +--- +title: "数字" +description: "用于录入和存储数值型数据,如价格、库存、数量和比例。可以设置小数位、货币符号、百分比和图形展示。" +--- + +数字字段用于存放可计算的数值,比如价格、库存、数量、分数和比例。它可以设置数字、货币或百分比格式,也可以用条形、环形或折线展示数值状态。 + +## 适用场景 + +| 场景 | 适合内容 | +| --- | --- | +| 金额和成本 | 合同金额、商品价格、预算、成本 | +| 数量和库存 | 库存数量、订单数量、工时、次数 | +| 比例和完成度 | 达成率、转化率、完成率 | +| 分数和指标 | 评分、权重、健康度、风险分 | + +## 创建和设置 + + + + 点击表格视图表头右侧的 `+`,在字段类型列表中选择 **数字**。 + + + 输入字段名称,比如“商品价格”、“库存数量”或“达成率”。 + + + 根据业务需求选择 **数字**、**货币** 或 **百分比**。 + + + 设置小数位数,并按需为新记录设置默认数字。 + + + +设置格式化 + +## 数字格式 + +| 格式 | 适合内容 | 示例 | +| --- | --- | --- | +| 数字 | 普通计数、数量、分数 | `100`、`2.5` | +| 货币 | 金额、成本、预算 | `¥100.00` | +| 百分比 | 比率、完成度、转化率 | `50%` | + +精度用于设置小数点后的保留位数。设定精度后,系统会按该精度四舍五入显示数值。 + +设置精度 + +## 显示设置 + +除了直接显示数值,数字字段还支持图形化展示: + +| 显示方式 | 适合字段 | 说明 | +| --- | --- | --- | +| 默认 | 单值和多值数字 | 直接显示数字 | +| 条形 | 单值和多值数字 | 用条形长度表示数值大小 | +| 环形 | 单值数字 | 用环形进度表示数值占比 | +| 折线 | 多值数字 | 用折线展示多个数值的变化 | + +条形和环形可以设置目标值、颜色和是否显示数字。目标值表示图形满格对应的数值,比如满分是 `100` 时,目标值可以填 `100`。 + +设置显示方式 + +## 常见用法 + +- **合同金额记录**:新建“合同金额”字段,格式选择 **货币**,符号选择 **¥**,精度保留 2 位小数。 +- **销售达成率**:新建“达成率”字段,格式选择 **百分比**,显示方式选择 **条形**,目标值设置为 `1`。 +- **库存数量管理**:新建“库存数量”字段,格式选择 **数字**,用于排序、筛选和统计。 + +## 注意事项 + +- 数字字段只允许输入整数或小数,比如 `12`、`3.14`。 +- 百分比按小数存储,输入 `100%` 实际存储为 `1`,输入 `50%` 实际存储为 `0.5`。 +- 公式、汇总和查找结果如果输出为数字,也可以使用数字字段的格式化和显示方式。 diff --git a/zh/basic/field/rating.mdx b/zh/basic/field/rating.mdx new file mode 100644 index 00000000..b4be1014 --- /dev/null +++ b/zh/basic/field/rating.mdx @@ -0,0 +1,52 @@ +--- +title: "评分" +description: "用于为记录添加可视化的数值评分,适合展示质量、优先级、满意度等评价结果。" +--- + +评分字段用于用图标数量表示评价结果。它适合记录客户满意度、产品评分、优先级、创意分或绩效评价。 + +## 适用场景 + +| 场景 | 适合内容 | +| --- | --- | +| 产品评价 | 商品、功能或内容评分 | +| 服务反馈 | 客户满意度、服务质量评价 | +| 绩效评估 | 员工、项目或供应商评分 | +| 优先级判断 | 紧急程度、价值、风险 | + +## 创建和设置 + + + + 点击表格视图表头右侧的 `+` 图标,在字段类型列表中选择 **评分**。 + + + 输入字段名称,比如“客户满意度”、“推荐指数”或“优先级”。 + + + 默认最大值为 **5**。也可以改为 **10** 等其他上限,决定用户可以选择的评分范围。 + + + 默认显示为星形,也可以更换为其他图标符号,以匹配具体业务含义。 + + + +## 配置项 + +| 配置 | 说明 | +| --- | --- | +| 最大值 | 控制评分上限,比如 5 分制或 10 分制 | +| 图标样式 | 控制评分显示符号,比如星形、心形、点赞、灯泡 | + +## 常见用法 + +- **产品评价管理**:在商品表中记录用户评分,后续筛选高分商品。 +- **服务质量反馈**:在售后记录表中收集客户满意度,便于复盘服务质量。 +- **员工绩效评估**:在人事考核表中对多个能力维度打分。 +- **评分加评论**:搭配 **多行文本** 字段,形成“定量评分 + 定性评论”的评价结构。 + +## 注意事项 + +- 评分字段的数值可以被 **公式** 引用,用于计算平均分或总分。 +- 设定最大值时,建议先统一团队对分数含义的理解。 +- 如果后续调低最大值,比如从 10 分改为 5 分,原数据中超过新上限的分数可能无法正确显示。调整前请先确认历史数据。 diff --git a/zh/basic/field/rollup.mdx b/zh/basic/field/rollup.mdx new file mode 100644 index 00000000..b4b950cb --- /dev/null +++ b/zh/basic/field/rollup.mdx @@ -0,0 +1,70 @@ +--- +title: "汇总" +description: "用于基于关联记录进行聚合计算,例如求和、计数、平均值、最大值和最小值。" +--- + +{/* mintlify-resync: 2026-05-14 */} +汇总字段用于对关联表中的多条数据进行统计计算。它通常基于已有的 **关联** 字段,从关联记录中选择目标字段,再按指定函数计算结果。 + +## 适用场景 + +| 场景 | 适合内容 | +| --- | --- | +| 订单金额 | 汇总订单明细中的价格,自动计算订单总额 | +| 任务进度 | 统计关联任务数量、完成数量或平均评分 | +| 客户价值 | 汇总客户关联订单的消费总额或订单次数 | +| 标签整理 | 合并关联记录中的标签、参与人或渠道来源 | + +## 创建和设置 + + + + 创建汇总字段前,需要先建立 **关联** 字段。 + + + 点击表头 `+` 添加字段,选择 **汇总** 类型。 + + + 选择数据来源的关联字段,再选择要计算的目标字段。 + + + 根据目标字段类型选择求和、计数、平均值、最大值、最小值等函数。 + + + +## 格式和展现 + +汇总结果通常可以继续使用格式化和交互展现: + +- **格式化**:设置小数精度、货币符号或百分比。 +- **交互展现**:将数字结果显示为条形或环形等样式。 + +## 常见用法 + +- **书店订单结算**:在 `订单表` 中通过 `所选书籍` 关联字段汇总 `书籍库表` 的 `价格` 字段,函数选择 **SUM**,自动计算订单总额。 +- **项目任务统计**:在 `项目表` 中汇总关联任务数量,或统计任务完成率。 +- **客户消费汇总**:在 `客户表` 中汇总关联订单金额,查看客户累计消费。 + +## 支持的统计函数 + +| 公式名 | 解释 | +| -------------- | -------------------------- | +| COUNTALL | 计算所有值,包括文本和空值 | +| COUNTA | 计算非空值的数量 | +| COUNT | 计算数值项的数量 | +| SUM | 计算所有数值的总和 | +| MAX | 返回所有数值中的最大值 | +| MIN | 返回所有数值中的最小值 | +| AND | 如果所有值都为真,则返回真 | +| OR | 如果任何值为真,则返回真 | +| XOR | 如果奇数个值为真,则返回真 | +| ARRAY\_JOIN | 将数组中的所有值连接成一个字符串 | +| ARRAY\_UNIQUE | 从数组中删除重复的值,并返回一个仅包含唯一值的新数组 | +| ARRAY\_COMPACT | 从数组中删除所有空值,并返回一个新数组 | +| CONCATENATE | 将多个值连接成一个字符串 | + +## 注意事项 + +- **动态更新**:汇总字段实时计算。如果修改源数据,或改变关联关系,汇总结果会自动刷新。 +- **数据类型限制**:某些函数只对特定类型生效。比如 `求和` 只能用于数字字段,如果选择文本字段,系统不会提供求和选项。 +- **性能提示**:大量汇总操作可能影响性能,特别是涉及很多记录时。建议合理规划关联结构,并定期检查汇总设置。 diff --git a/zh/basic/field/single-line-text.mdx b/zh/basic/field/single-line-text.mdx new file mode 100644 index 00000000..1cce50de --- /dev/null +++ b/zh/basic/field/single-line-text.mdx @@ -0,0 +1,57 @@ +--- +title: "单行文本" +description: "用于录入和存储姓名、标题、编号、网址等较短文本。" +--- + +单行文本用于存放不需要换行的短内容,比如客户姓名、任务标题、订单编号、SKU、网址、邮箱或电话号码。字段内容可以排序、筛选,也可以在公式中配合文本函数做提取、拼接或格式处理。 + +需要换行的备注、摘要或说明,用 **[多行文本](/zh/basic/field/long-text)**。状态、分类、优先级这类固定选项,通常用 **[单选](/zh/basic/field/single-select)** 或 **[多选](/zh/basic/field/multiple-select)** 更合适。 + +## 适用场景 + +| 场景 | 适合内容 | +| --- | --- | +| 记录名称或标题 | 客户姓名、任务标题、商品名称、项目名称 | +| 保存编号或代码 | 订单编号、合同编号、SKU、外部系统 ID | +| 保存联系或访问入口 | 公司官网、邮箱地址、手机号 | +| 录入简短自由文本 | 无法提前列出固定选项的短说明、标识或备注 | + +## 创建和设置 + + + + 点击表头右侧的 **+** 图标,在字段类型列表中选择 **单行文本**。 + + + 输入字段名称,比如“客户姓名”、“订单编号”或“公司官网”。 + + + 如果新记录通常带同一段初始内容,可以在字段配置中填写 **默认值**,比如“待审核”或“新建”。默认值只会在创建新记录时自动填入,之后仍可手动修改。 + + + +## 显示方式 + +单行文本支持四种显示方式: + +| 显示方式 | 适合内容 | 点击后的行为 | +| --- | --- | --- | +| 默认 | 姓名、标题、编号等普通文本 | 无额外点击行为 | +| URL | 网页地址 | 用默认浏览器打开该网址 | +| Email | 邮箱地址 | 打开默认邮箱应用 | +| 电话 | 电话号码 | 打开设备上的通讯应用;在手机端访问时,可以直接拨打电话 | + +显示方式只改变显示和点击行为,不会改变字段类型。交互展现也可以用于公式、汇总、引用等字段。详情请看[交互展现](/zh/basic/field/common/show-as)。 + +## 常见用法 + +- **客户联系人管理**:新建“公司官网”字段并设为 **URL**,点击即可访问客户官网;新建“手机号”字段并设为 **电话**,在手机端可以一键拨打。 +- **订单或合同管理**:新建“订单编号”或“合同编号”字段,用于搜索、筛选和对照外部系统记录。 +- **工单初始状态**:新建“当前阶段”字段,并把默认值设为“新建”。之后每次添加工单记录时,字段会自动填入初始状态。如果阶段来自固定流程,建议改用 **单选** 字段。 +- **文本提取和拼接**:在公式字段中引用单行文本,提取编号片段、拼接显示名称或统一文本格式。 + +## 注意事项 + +- 单行文本适合短内容,回车键通常用于确认输入。备注、文章摘要等长内容请使用 **多行文本** 字段。 +- URL、Email 和电话只是显示方式,不会改变字段类型。字段仍然是单行文本,可以参与排序、筛选和文本函数处理。 +- 单行文本不会把内容限制为固定选项。需要统一状态、分类或优先级时,请使用 **单选** 或 **多选** 字段。 diff --git a/zh/basic/field/single-select.mdx b/zh/basic/field/single-select.mdx new file mode 100644 index 00000000..2f506795 --- /dev/null +++ b/zh/basic/field/single-select.mdx @@ -0,0 +1,60 @@ +--- +title: "单选" +description: "从预设的选项列表中选择一个选项,适合做状态、分类和优先级。" +--- + +单选字段用于从预设选项中选择一个值。它适合记录互斥状态,比如任务阶段、客户等级、优先级或审批结果。 + +## 适用场景 + +| 场景 | 适合内容 | +| --- | --- | +| 状态流转 | 未开始、进行中、已完成等互斥阶段 | +| 分类管理 | 客户等级、线索来源、内容类型 | +| 优先级管理 | 高、中、低等固定优先级 | +| 审批结果 | 通过、驳回、待补充等单一结果 | + +## 创建和设置 + + + + 点击表头右侧的 `+` 图标,在字段类型列表中选择 **单选**。 + + + 输入字段名称,比如“任务状态”、“优先级”或“客户等级”。 + + + 在输入框中输入选项名称,按 **回车键** 即可快速生成新选项。 + + + 如果新记录通常使用同一个选项,可以设置默认值。 + + + +## 选项管理 + +| 设置 | 说明 | +| --- | --- | +| 颜色 | 点击选项名称左侧的小圆点,从色板中选择颜色 | +| 排序 | 按住选项左侧图标拖拽,调整下拉列表中的顺序 | +| 修改 | 直接修改选项名称,历史数据会同步更新 | +| 删除 | 点击选项右侧的垃圾桶图标删除选项 | +| 允许新增选项 | 关闭后,编辑单元格时只能使用已有选项 | + +## 常见用法 + +- **项目进度管理**:新建“任务状态”字段,设置“未开始”、“进行中”、“已完成”等选项,再基于该字段创建 **看板视图**。 +- **客户分级管理**:新建“客户等级”字段,设置“高”、“中”、“低”等选项,再按等级分组查看客户。 + +## 单选与多选 + +| 字段类型 | 可选数量 | 适合内容 | +| --- | --- | --- | +| 单选 | 每条记录只能选择 1 个值 | 状态、阶段、等级、优先级 | +| 多选 | 每条记录可以选择多个值 | 标签、技能、主题、部门 | + +## 注意事项 + +- 单选字段每条记录只能选择 **1** 个值,适合互斥状态。 +- 如果一条记录需要多个标签,请使用 **多选** 字段。 +- 将多选字段转换为单选字段前,请先确认数据。原数据如果包含多个选项,系统通常只会保留第一个选项,可能导致数据丢失。 diff --git a/zh/basic/field/user.mdx b/zh/basic/field/user.mdx new file mode 100644 index 00000000..d47f6177 --- /dev/null +++ b/zh/basic/field/user.mdx @@ -0,0 +1,49 @@ +--- +title: "成员" +description: "用于在记录中选择空间成员,常用于负责人、参与者、审批人和协作者。" +--- + +成员字段用于在记录中选择空间成员。它适合标记任务负责人、项目参与者、审批人或协作者,也可以配合筛选、分组和看板视图搭建个人工作台。 + +## 适用场景 + +| 场景 | 适合内容 | +| --- | --- | +| 任务负责人 | 为每条任务指定一个负责人 | +| 多人协作 | 一条记录选择多个成员,表示共同参与 | +| 审批和确认 | 记录审批人、确认人、交付负责人 | +| 个人工作台 | 用“当前用户”筛选出登录者自己的任务 | + +## 创建和设置 + + + + 点击表头 `+` 添加字段,选择 **成员** 类型。 + + + 输入字段名称,比如“负责人”、“执行者”或“审批人”。 + + + 开启后,一条记录可以选择多个成员;关闭后,一条记录只能选择一个成员。 + + + 按需开启 **用户被选择后发送通知**。开启后,被选中的成员会收到通知。 + + + +## 配置项 + +| 配置 | 说明 | 适合场景 | +| --- | --- | --- | +| 允许多选 | 一条记录可以选择多个成员 | 协作任务、多人参与 | +| 不允许多选 | 一条记录只能选择一个成员 | 责任到人、单一审批人 | +| 被选择后发送通知 | 成员被选中时收到通知 | 任务分配、审批提醒 | + +## 常见用法 + +- **任务分配与看板管理**:新建“负责人”字段,建议关闭多选,再创建看板视图并按负责人分组。 +- **我的工作台**:在表格或看板视图中设置筛选条件:`负责人` `是` `当前用户`,每位成员只看到自己的任务。 + +## 注意事项 + +- 如果开启 **允许多选**,一条记录在分组或看板视图中可能出现在多个成员分组下。比如任务同时分给 A 和 B,A 的列和 B 的列都会显示这条任务。 diff --git a/zh/basic/record.mdx b/zh/basic/record.mdx index 68e99758..0c31c323 100644 --- a/zh/basic/record.mdx +++ b/zh/basic/record.mdx @@ -1,47 +1,74 @@ --- -title: "记录" -description: "记录是表格中存储数据的基本单元。在最常见的表格视图中,每一行代表一条记录。一条记录由多个字段(列)组成,共同描述了某一个具体事项的完整属性(例如:一个客户的所有信息,或一个订单的所有细节)。" +title: "概览" +description: "记录是表格中存储数据的基本单元。表格视图中,每一行通常代表一条记录。" --- -## 一、 基础操作 +记录用于保存一条完整的数据。每条记录由多个字段组成,比如一条客户记录可以包含姓名、电话、负责人和跟进状态;一条订单记录可以包含订单号、客户、金额和交付时间。 -### 1. 创建新记录 -- **底部追加**:点击表格视图最底部的 `+` 按钮,在末尾添加一行 -- **顶部工具栏**:点击工具栏左侧的 `+ 添加记录` 按钮 -- **右键菜单**:在任意行上点击右键,选择 `在上/下方插入记录` +## 基础概念 -### 2. 编辑记录 -- **单元格编辑**:直接点击任意单元格即可输入或修改内容 -- **清空单元格**:选中一个或多个单元格,按下 `Delete` 或 `Backspace` 键可快速清除内容 +| 概念 | 说明 | +| --- | --- | +| 记录 | 表格中的一行数据 | +| 字段 | 记录中的一个属性,对应表格中的一列 | +| 单元格 | 某条记录在某个字段下的具体值 | +| 首列字段 | 记录的主要显示名称,常用于移动端列表和关联记录选择列表 | -### 3. 删除记录 -- **单条删除**:选中记录后右键点击,选择`删除记录` -- **批量删除**:勾选行首的复选框选中多条记录,右键点击,选择`删除记录` +## 创建记录 -### 4. 批量处理 -- **拖拽选择**:按住鼠标左键拖拽,可一次性框选多个单元格或多行记录进行批量操作,如编辑、删除等。 +你可以通过以下方式创建记录: -### 5. 复制粘贴 -- 支持复制和粘贴单个或多个单元格的内容 -- 当粘贴的数据行数超过当前表格的行数时,系统会 **自动增加新行** +通过记录右键菜单创建记录 -## 二、 协作与追踪 +| 入口 | 操作 | +| --- | --- | +| 表格底部 | 点击表格视图底部的 `+` 按钮,在末尾添加一条记录 | +| 顶部工具栏 | 点击工具栏左侧的 `+ 添加记录` | +| 右键菜单 | 右键点击现有记录,选择在上方或下方插入记录 | -### 1. 展开详情(记录卡片) -点击记录行首的 **双向箭头** 图标(或选中记录按空格键),可以打开记录详情卡片。 -- **适用场景**:当表格字段非常多、横向滚动条很长时,详情卡片能让你在一个页面内纵向浏览完该条记录的所有信息,便于沉浸式阅读和修改 +## 编辑记录 -### 2. 评论互动 -每条记录都内置了独立的评论区。你可以在详情卡片右侧发起讨论、@提及同事,详情请参考 [评论](/zh/basic/record/comment) 章节。 +- **编辑单元格**:点击任意单元格,直接输入或修改内容。 +- **清空内容**:选中一个或多个单元格,按 `Delete` 或 `Backspace` 清除内容。 +- **批量选择**:按住鼠标拖拽,可以框选多个单元格或多行记录,再进行编辑、删除或复制。 +- **复制粘贴**:可以复制和粘贴单个或多个单元格。当粘贴的数据行数超过当前表格行数时,Teable 会自动添加新行。 -### 3. 记录历史 -系统会自动追踪记录的修改历史。点击记录详情页右上角的 **时钟图标**,即可回溯变更历史,详情请参考 [记录历史](/zh/basic/record/record-history) 章节。 +## 删除记录 -### 4. 关联引用 -通过 **关联字段**,可以将不同表中的记录连接起来(例如将“订单记录”关联到“客户记录”)。详情请参考 [关联字段](/zh/basic/field/advanced/link) 章节。 +批量删除记录菜单 -## 三、 注意事项 +选中一条或多条记录后,右键点击并选择 **删除记录**。批量删除时,可以先勾选行首复选框,再执行删除操作。 -- **首列的重要性**:记录的第一列字段被视为该条记录的“标题”。在移动端列表、关联字段选择列表中,系统默认只展示第一列的内容。因此,**建议在第一列放置最具辨识度的信息(如姓名、任务名),而非不重要的备注** -- **获取记录 ID**:每条记录都有一个唯一的身份证号。展开记录详情页,查看浏览器 URL 中以 `rec` 开头的字符串即为记录 ID -- **权限限制**:如果你发现无法编辑某些行,可能是管理员通过 **权限矩阵** 限制了你的操作范围。详情请参考 [权限矩阵](/zh/basic/authority-matrix) 章节 +## 记录详情 + +打开记录详情入口 + +点击记录行首的展开图标,或选中记录后按空格键,可以打开记录详情卡片。 + +详情卡片适合查看字段较多的记录。你可以在一个页面中纵向浏览字段内容,减少横向滚动,也可以在详情卡片中编辑字段、查看评论和记录历史。 + +## 协作和追踪 + +| 功能 | 说明 | +| --- | --- | +| 评论 | 每条记录都有独立评论区,可以讨论具体数据、@提及同事或补充上下文。详情请看[评论](/zh/basic/record/comment)。 | +| 记录历史 | Teable 会记录记录变更,便于回溯修改内容。详情请看[记录历史](/zh/basic/record/record-history)。 | +| 关联记录 | 通过 **关联** 字段,可以把不同表中的记录连接起来。详情请看[关联字段](/zh/basic/field/link)。 | + +## 注意事项 + +- 首列字段会作为记录的主要显示名称。建议把姓名、任务名、订单号等有辨识度的信息放在首列,不要把备注类字段放在首列。 +- 每条记录都有唯一记录 ID。打开记录详情后,浏览器地址中以 `rec` 开头的字符串就是记录 ID。 +- 如果你无法编辑某些记录,可能是管理员通过 **权限矩阵** 限制了可编辑范围。详情请看[权限矩阵](/zh/basic/authority-matrix)。 diff --git a/zh/basic/record/comment.mdx b/zh/basic/record/comment.mdx index 8caa31d0..508c3454 100644 --- a/zh/basic/record/comment.mdx +++ b/zh/basic/record/comment.mdx @@ -1,46 +1,68 @@ --- title: "评论" -description: "评论功能为每条记录提供了一个沟通空间,团队成员可以直接针对具体的数据进行讨论、@提醒同事或补充上下文信息。" +description: "在记录中发起讨论、@提及同事,并为具体数据补充上下文。" --- -## 一、 评论入口与操作 +评论属于具体记录。团队成员可以在同一条记录下讨论问题、补充资料、说明修改原因,避免把上下文散落在聊天工具里。 -### 1. 评论入口 -- **入口**:点击任意一行记录将其展开为详情卡片,点击右上角的 **评论** 图标 即可打开侧边评论栏 +## 使用评论 -### 2. 发送内容 -- **富文本支持**:评论框支持插入 **图片** 或粘贴 **链接**,方便补充截图或参考资料 +### 打开评论 -## 二、 互动 +记录详情卡片中的评论入口 -### 1. @提及 -- **操作**:输入 `@` 符号,从下拉列表中选择同事 -- **作用**:被 @ 的同事会收到通知 +打开任意记录的详情卡片,点击右上角的 **评论** 图标,即可打开侧边评论栏。 -### 2. 回复与表情回应 -- **回复**:点击某条评论下方的 `回复` 按钮,可针对该条内容进行盖楼讨论,保持话题连贯 -- **表情回应**:点击评论旁的笑脸图标,使用 👍、❤️ 等表情快速表态,既高效又能活跃团队气氛 +记录右键菜单中的添加评论入口 -### 3. 编辑与删除 -- **操作**:将鼠标悬浮在自己发送的评论上,点击出现的操作按钮即可进行 `编辑` 或 `删除` -- **注**:编辑过的评论会标记为 `(已编辑)` +你也可以在表格视图中右键点击某条记录,选择 **添加评论**。 -## 三、 通知与订阅 +### 发送评论 -### 1. 默认通知规则 -在不进行任何设置的情况下,仅在以下场景触发通知: -- 有人 **@提及** 了你 -- 有人 **回复** 了你的评论 +在评论框中输入内容后发送。评论支持插入图片和粘贴链接,适合补充截图、参考资料或外部说明。 -### 2. 主动订阅(关注记录) -如果你是某项任务的负责人,希望掌握它的所有动态: -- **操作**:点击评论面板右上角的 `铃铛`,切换为 `通知所有评论` +评论输入框 -### 3. 查看通知 -- **位置**:新消息通常出现在界面左下角的通知中心 -- **跳转**:点击通知,系统会自动定位并跳转到对应的记录详情页,直接展示该条评论 +### 提及同事 -## 四、 使用场景 +输入 `@` 后,从下拉列表中选择同事。被提及的成员会收到通知,并可以直接跳转到对应记录。 -- **任务澄清**:在“需求开发”任务下,开发人员直接 @产品经理 询问某个细节逻辑,对话记录永久留存在记录中,方便回溯 -- **审批反馈**:在“报销申请”记录下,财务人员留言“发票抬头有误,请重贴”,申请人收到通知后及时修正 +### 回复和回应 + +| 操作 | 说明 | +| --- | --- | +| 回复 | 点击评论下方的 **回复**,可以针对某条评论继续讨论 | +| 表情回应 | 点击评论旁的表情图标,可以用表情快速表态 | +| 编辑 | 将鼠标悬浮在自己发送的评论上,点击操作按钮进行编辑 | +| 删除 | 将鼠标悬浮在自己发送的评论上,点击操作按钮删除评论 | + +编辑过的评论会显示“已编辑”标记。 + +## 通知和订阅 + +默认情况下,只有以下情况会触发通知: + +- 有人 `@` 提及你。 +- 有人回复你的评论。 + +如果你希望持续关注某条记录,可以点击评论面板右上角的铃铛图标,切换为通知所有评论。 + +新评论通知通常出现在界面左下角的通知中心。点击通知后,Teable 会打开对应记录,并定位到相关评论。 + +## 常见场景 + +- **任务澄清**:在需求或任务记录下 @ 同事确认细节,讨论内容会保留在记录中。 +- **审批反馈**:在报销、合同或内容审核记录下留下修改意见,申请人收到通知后可以直接处理。 +- **修改说明**:在关键字段变更后补充原因,方便之后回溯。 diff --git a/zh/basic/record/record-history.mdx b/zh/basic/record/record-history.mdx index 2df9cdfa..2fd90837 100644 --- a/zh/basic/record/record-history.mdx +++ b/zh/basic/record/record-history.mdx @@ -1,36 +1,57 @@ --- title: "记录历史" -description: "Teable 中的记录历史允许跟踪和管理一段时间内对数据所做的更改,方便日后对数据历史进行查找和回溯。" +description: "查看表格或单条记录的历史变更,追踪数据被谁在什么时候修改。" --- +记录历史用于查看数据变化。你可以从表格层面查看多条记录的变更,也可以打开单条记录,查看这条记录的完整修改历史。 + ## 表格记录历史 -表格记录历史可以查看当前表格中的所有记录的历史,此功能可使用户从全局的表格视角查看记录的变更历史,了解哪些记录被修改过,并且有助于恢复被误删的记录数据。 +表格记录历史展示当前表格中多条记录的变更。它适合从全局视角查看哪些记录被修改过,也可以用于查找误删记录。 + +表格历史菜单入口 -### 功能入口 -点击顶部工具栏右侧的记录历史图标 +点击表格右上角的 **...** 按钮,选择 **历史** > **表格记录历史**。 -打开表格历史记录弹框,点击 “查看记录” 按钮,可以跳转至对应的记录 +表格记录历史弹窗 -### 权限说明 +在表格历史记录弹窗中,点击某条历史记录旁的 **查看记录**,可以跳转到对应记录。 -* 在没有开启权限矩阵的情况下,允许拥有表格编辑权限的用户查看。 +未开启 **权限矩阵** 时,拥有表格编辑权限的用户可以查看表格记录历史。开启后,只有管理员可以查看。 -* 在开启了权限矩阵的情况下,仅允许拥有管理员权限的用户查看。 +## 单条记录历史 -## 记录历史 +单条记录历史只展示当前记录的变更。它适合查看某条记录的字段何时被修改、修改前后是什么内容。 -此功能聚焦于单个记录的详细历史,用户可以选择特定的一条记录,查看其完整的变更历史。 +记录详情卡片中的记录历史入口 -### 功能入口 +打开记录详情卡片,点击右上角的记录历史图标。 -点击记录展开卡片右上角的记录历史图标 +记录右键菜单中的记录历史入口 -### 权限说明 +你也可以在表格视图中右键点击某条记录,选择 **显示记录历史**。 -* 任何情况下,只需拥有某条记录的编辑权限,就可查看这条记录的历史。 +只要用户拥有某条记录的编辑权限,就可以查看这条记录的历史。 ## 注意事项 -记录历史功能的最小单元是记录的单元格,因此在进行大批量的数据操作时,会产生大量的历史数据。 +- 记录历史以单元格为最小单位保存变更。 +- 批量导入、批量粘贴或批量更新会产生较多历史记录。 +- 如果你看不到历史记录入口,先确认自己是否拥有对应记录或表格的编辑权限。 diff --git a/zh/basic/space.mdx b/zh/basic/space.mdx index 19565f0d..5ef82f64 100644 --- a/zh/basic/space.mdx +++ b/zh/basic/space.mdx @@ -4,54 +4,58 @@ description: "创建、重命名、删除和管理 Teable 空间。" --- {/* mintlify-resync: 2026-05-14 */} -功能层级 -![](/images/ji-ben-gong-neng/30558ca439f98335.png) -### 创建新的空间 +## 创建新的空间 -用户登录 Teable 后,点击右上角「创建空间」即可创建新空间。创建完成后会自动跳转到新空间,以便用户直接开展工作。 +用户登录 Teable 后,可以从空间切换菜单创建新空间: 每个用户最多只能拥有两个免费空间。已拥有两个免费空间时,将无法继续创建新的免费空间。 -![](/images/ji-ben-gong-neng/fe89775652df41b6.png) +1. 点击左上角当前空间名称 +2. 点击 **创建空间** +3. 输入空间名称并确认 -### 重命名空空间 +从空间切换菜单创建空间 + +## 重命名空间 -用户可以根据需要更改空间名称: +用户可以在空间设置中修改空间名称: -1. 点击空间右上角 「···」 按钮,打开空间菜单 -2. 点击重命名 -3. 设置新的名称 -4. 点击输入框外的任意位置即可保存 +1. 在空间侧边栏点击 **设置** +2. 在 **空间** 分组下打开 **概览** +3. 修改 **空间名称** 在空间设置中重命名空间 -### 删除空间 +## 删除空间 在必要时也可以删除空间: -1. 点击空间右上角 「···」 按钮,打开空间菜单 -2. 点击删除 +1. 在空间侧边栏点击 **设置** +2. 在 **空间** 分组下打开 **概览** +3. 点击 **删除空间** -### 空间回收站 +## 空间回收站 已删除的空间会移至回收站,您可以选择永久删除或恢复空间。 从空间切换菜单打开空间回收站 -![](/images/ji-ben-gong-neng/800e5de85dc0652b.png) - -### 分享给我的数据库 +## 分享给我的数据库 当别人把数据库作为协作者分享给你时,该数据库会显示在空间侧边栏的 **分享给我的** 中。 @@ -63,7 +67,7 @@ description: "创建、重命名、删除和管理 Teable 空间。" 关于数据库公开分享,请参阅 [数据库](/zh/basic/base)。 -### 空间设置 +## 空间设置 * 点击空间右上角 「···」 按钮,打开空间菜单 * 点击空间设置 @@ -72,9 +76,7 @@ description: "创建、重命名、删除和管理 Teable 空间。" **概览** -在概览页面中可以修改空间名称或删除空间。 - -![](/images/ji-ben-gong-neng/734748fc4f0382cb.png) +在概览页面中可以修改 **空间名称**,也可以查看空间 ID。 **协作者** diff --git a/zh/basic/space/base-invite.mdx b/zh/basic/space/base-invite.mdx index 4eca4735..1f5893b5 100644 --- a/zh/basic/space/base-invite.mdx +++ b/zh/basic/space/base-invite.mdx @@ -1,47 +1,54 @@ --- title: "数据库邀请" -description: "允许您以“数据库”为最小单位进行权限管控,您可以将成员仅邀请到特定的数据库中,而无需向其通过开放整个空间的访问权限,从而实现更精细、更安全的数据协作。" +description: '允许您以"数据库"为最小单位进行权限管控,您可以将成员仅邀请到特定的数据库中,而无需开放整个空间的访问权限,从而实现更精细、更安全的数据协作。' --- -## 一、 添加协作者 +## 什么是数据库协作者? -### 1. 发起邀请 -进入任意数据库,点击右上角的 `邀请` 按钮。支持两种添加方式: +数据库协作者是仅被邀请到特定数据库的成员,与空间协作者不同,他们只能访问被邀请的数据库,无法看到空间内的其他数据库。 + +## 添加数据库协作者 -- **通过电子邮件邀请**:直接输入对方的邮箱地址,设置好数据库权限(如“可搭建”),点击 **发送邀请** 即可。 -- **通过链接邀请**:点击切换至“通过链接邀请”标签页,生成一个专属邀请链接。将此链接复制发送给对方,他们点击即可加入。 +进入任意数据库,点击右上角的 `邀请` 按钮。支持两种添加方式: -数据库邀请界面 +- **通过电子邮件邀请**:直接输入对方的邮箱地址,设置好数据库权限(如"可搭建"),点击 **发送邀请** 即可。 +- **通过链接邀请**:点击切换至"通过链接邀请"标签页,生成一个专属邀请链接。将此链接复制发送给对方,他们点击即可加入。 -### 2. 协作者列表 -在邀请界面中,您可以查看当前能访问该数据库的所有协作者名单。 -- **数据库协作者**:仅被邀请到当前数据库的人员 -- **空间协作者**:名字旁带有“空间”标识。这表示该成员是整个空间的协作者,自动继承了访问该数据库的权限 +数据库邀请方式 +在邀请界面中,您可以查看当前能访问该数据库的所有协作者名单: -## 二、 权限说明 +- **数据库协作者**:仅被邀请到当前数据库的人员。 +- **空间协作者**:名字旁带有"空间"标识,表示该成员是整个空间的协作者,自动继承了访问该数据库的权限。 -数据库提供四种层级的权限角色,以满足不同的协作深度。更详细的权限点对比表,请参阅 **[协作权限](/zh/basic/space/space-permission)** 章节。 +数据库协作者列表 -如需实现更精细的表格、字段及记录级别的权限管控,请使用 **[权限矩阵](/zh/basic/authority-matrix)** 功能。 +数据库提供四种层级的权限角色,以满足不同的协作深度。更详细的权限对比请参阅[协作权限](/zh/basic/space/space-permission)。 -数据库邀请界面 +如需实现更精细的表格、字段及记录级别的权限管控,请使用[权限矩阵](/zh/basic/authority-matrix)功能。 -## 三、 使用场景 +| 角色 | 权限说明 | +| ---- | -------- | +| 可搭建 | 可以进行创建动作,修改表格结构、编辑自动化、开启权限矩阵。 | +| 可编辑 | 可以对数据进行修改。 | +| 可评论 | 可以对记录进行评论,不能修改数据。 | +| 可查看 | 可以查看,不可评论。 | -### 场景一:外部协作 -- **需求**:公司聘请了一位外部设计师整理素材库,但不希望他看到公司的财务表或客户表 -- **操作**:仅将设计师邀请进入“素材管理”数据库,并赋予 **可编辑** 权限 -- **效果**:设计师只能访问素材库进行工作,对空间内的其他数据一无所知,保障了核心数据安全 +## 使用场景 -### 场景二:跨部门数据共享 -- **需求**:销售部需要查看仓库的库存情况以便接单,但不能随意改动库存数 -- **操作**:仓库管理员生成一个 **可查看** 权限的邀请链接,发送给销售部群组 -- **效果**:销售部全员能实时看到最新库存,但无法误操作修改数据,避免了库存账实不符 +数据库邀请适用于外部协作,例如,聘请外部设计师整理素材库时,只需将其邀请进入"素材管理"数据库并赋予**可编辑**权限,设计师无法看到空间内的任何其他数据库。 -## 四、 注意事项 +## 注意事项 -- **权限继承原则**:如果一个用户已经是“可管理”权限,那么他自动拥有该空间下所有数据库的最高权限。您无法在数据库将他的权限降级 -- **链接安全**:使用“链接邀请”时请注意,任何获得该链接的人都可以尝试加入数据库。如果链接泄露,您可以点击邀请链接右侧的 X 即可删除 +- **权限继承**:空间"可管理"成员自动拥有该空间下所有数据库的最高权限,无法在数据库层级将其降级。 +- **链接安全**:任何获得邀请链接的人都可以尝试加入数据库。如果链接泄露,可点击链接右侧的 X 将其删除。 -**[权限矩阵](/zh/basic/authority-matrix)** 和 **[协作权限](/zh/basic/space/space-permission)** 并存时,仅 **“可管理”** 用户不受`权限矩阵`限制,其他用户均受`权限矩阵`管控。 \ No newline at end of file +[权限矩阵](/zh/basic/authority-matrix)和[协作权限](/zh/basic/space/space-permission)并存时,仅**可管理**用户不受权限矩阵限制,其他用户均受权限矩阵管控。 diff --git a/zh/basic/space/billing.mdx b/zh/basic/space/billing.mdx index 4c364ab5..b3af1b96 100644 --- a/zh/basic/space/billing.mdx +++ b/zh/basic/space/billing.mdx @@ -14,7 +14,7 @@ description: "了解如何管理订阅、查看账单详情、监控用量以及 2. 在**空间**分组中选择**计费** 计费设置概览 diff --git a/zh/basic/space/space-invite.mdx b/zh/basic/space/space-invite.mdx index b06bcc1d..9a7af534 100644 --- a/zh/basic/space/space-invite.mdx +++ b/zh/basic/space/space-invite.mdx @@ -3,42 +3,71 @@ title: "空间邀请" description: "通过邮箱或者链接来邀请他人成为空间协作者" --- -### 什么是空间协作者? +## 什么是空间协作者? 当您邀请另一用户进入空间时,该用户将成为空间协作者,能够访问该空间中的所有数据库。 -> 如果某用户只需要访问空间中的部分数据库,建议将其设置为[数据库协作者](/zh/basic/space/base-invite)。更多协作者和权限级别信息请查看[协作权限明细](/zh/basic/space/space-permission)。 - -添加新用户到空间时,你可以分配以下角色: - -* 可管理 负责管理,拥有所有权限管理用户,包括表格、自动化、开启权限矩阵。 -* 可搭建 可以进行创建动作,修改表格结构、编辑自动化、开启权限矩阵。 -* 可编辑 可以对数据进行修改。 -* 可评论 可以对记录进行评论,不能修改数据。 -* 可查看 可以查看,不可评论。 - -### 添加空间协作者 +## 添加空间协作者 创建邀请链接需要空间`可管理`或`可搭建`权限 +空间邀请入口 + 1. 在左侧空间列表中选择要添加协作者的空间 2. 点击空间顶部导航栏中的"邀请"按钮 3. 在弹出的邀请窗口中,可以选择通过邮箱或链接邀请。此外,您还可以找到您已创建的邀请链接和当前的空间协作者列表 4. **邮箱邀请**:输入邮箱地址,多个地址用逗号分隔。设置协作者在空间中的权限级别,然后点击发送邀请 -![](/images/ji-ben-gong-neng/xie-zuo/7a306bd3330d554a.png) + +通过邮箱邀请空间协作者 + 5. **链接邀请**:点击"通过链接邀请",设置访问权限后创建链接。点击链接旁边的剪贴板图标即可复制分享 -![](/images/ji-ben-gong-neng/xie-zuo/ddafa6fa7ca7a274.png) -**注意**:空间协作者可访问空间内所有数据库。如需分享特定数据库,建议设置为数据库协作者。 +通过链接邀请空间协作者 -### 删除邀请链接 +空间协作者可访问空间内所有数据库,如果某用户只需要访问空间中的部分数据库,建议将其设置为[数据库协作者](/zh/basic/space/base-invite)。 + +## 删除邀请链接 点击邀请链接右侧的 X 即可删除。删除后链接立即失效,其他人将无法再通过该链接加入空间。 -### 移除空间协作者 +删除空间邀请链接 + +## 移除空间协作者 + +移除空间协作者 -在空间分享窗口中,点击用户旁边的 X 可移除协作者。注意事项: +在空间协作组中,点击用户旁边的 X 可移除协作者。注意事项: * **权限限制**:只有`可管理`或`可搭建`的用户才能移除其他协作者 * **自我移除**:当空间中还有其他`可管理`用户时,可以移除自己的访问权限 -* **权限范围**:无法从此窗口移除数据库协作者 \ No newline at end of file +* **权限范围**:无法从此窗口移除数据库协作者 + +添加新用户到空间时,你可以分配以下角色(详见[协作权限明细](/zh/basic/space/space-permission)): + +| 角色 | 权限说明 | +| ---- | -------- | +| 可管理 | 负责管理,拥有所有权限管理用户,包括表格、自动化、开启权限矩阵。 | +| 可搭建 | 可以进行创建动作,修改表格结构、编辑自动化、开启权限矩阵。 | +| 可编辑 | 可以对数据进行修改。 | +| 可评论 | 可以对记录进行评论,不能修改数据。 | +| 可查看 | 可以查看,不可评论。 | diff --git a/zh/basic/table.mdx b/zh/basic/table.mdx index fa0e6262..69032644 100644 --- a/zh/basic/table.mdx +++ b/zh/basic/table.mdx @@ -1,50 +1,69 @@ --- title: "表格" -description: "表格是数据库中存储数据的核心容器。与 Excel 中的“工作表 (Sheet)”类似,它是行与列的集合;但在 Teable 中,表格更是构建关系型数据库的基础单元。" +description: "在数据库中创建、导入、分享和管理表格。" --- {/* mintlify-resync: 2026-05-14 */} -## 一、 基础操作 +每个数据库可以包含多个表格,用于收集、存储和处理相关数据。Teable 的表格等同于关系数据库中的表,与 Excel 工作表有所不同——了解[两者的区别](/zh/compare/teable-vs-excel)有助于更好地掌握 Teable。 -### 1. 新建表格 -进入目标数据库,点击左侧目录栏顶部的 `+` 按钮,您可以选择以下三种方式: -- **新建空白表格**:从零开始设计表格结构 -- **导入 CSV**:从 `.csv` 文件中导入表格 -- **导入 Excel**:从 Excel 文件中导入表格 +## 创建和管理表格 -具体操作可参考 **[导入](/zh/basic/table/import)** 章节 +### 新建表格 - +在数据库中点击左侧目录顶部的 `+` 按钮,可选择: -### 2. 修改表格名称 -清晰的命名有助于团队协作。 -- **操作**:双击左侧目录中的表格名称,输入新名字后点击任意空白处即可自动保存 +新建表格菜单 - +1. 新建空白表格 +2. 从 CSV 导入 +3. 从 Excel 导入 -### 3. 删除表格 -- **操作**:鼠标悬停在表格名称上,点击右侧的 `...` 菜单,选择 **删除** +具体操作参考 [导入](/zh/basic/table/import) 章节。 - +### 重命名与删除 -## 二、 进阶管理 +重命名与删除表格 -### 1. 回收站 -如果不小心删除了重要的表格,可以去回收站找回。 -- **入口**:点击数据库界面左上角的 **回收站** 图标 - +- **重命名**:双击目录中的表格名称,输入新名称后点击空白处自动保存 +- **删除**:鼠标悬停在表格名称上,点击 `...` 菜单,选择 **删除** -- **操作**: - - **恢复**:将表格还原到数据库中,数据完好无损 - - **清空**:永久删除表格,无法再恢复 -- **注**:处于回收站中的表格,其数据在物理层面上依然存在,数据库连接仍可访问 -![](/images/ji-ben-gong-neng/d95c9e75be841b6e.png) +### 回收站 -### 2. 设计 -点击表格菜单中的 **设计** 按钮,可以查看表格的基础信息。 -- **基础信息**:表格的数据库 ID、物理表名、最后修改时间 -- **字段明细**:查看每个字段的类型、是否是计算字段、是否有唯一值校验等详细属性 +点击数据库界面左上角的 **回收站** 图标,可对已删除的表格执行: + +表格回收站 + +- **恢复**:将表格还原到数据库 +- **清空**:永久删除,无法恢复 + +## 设计表格 + +点击表格菜单中的 **设计**,可查看表格基础属性: + +表格设计 + +**表格信息** + +所属 Schema、物理表名、描述、最后修改时间 + +**字段明细** | 属性名 | 描述 | | :--- | :--- | @@ -63,42 +82,83 @@ description: "表格是数据库中存储数据的核心容器。与 Excel 中 | **notNull** | 是否启用非空校验 | | **unique** | 是否启用唯一值校验 | -![](/images/ji-ben-gong-neng/7120f4c7aa1ad8e2.png) +## 分享和访问表格 -### 3. 分享表格 +### 分享表格 -在表格中点击右上角 **分享**,切换到 **分享表**,打开 **公开分享到网络**,即可生成表格分享链接。 +在表格中点击右上角 **分享**,切换到 **分享表**,打开 **公开分享到网络**,即可生成分享链接。 -分享表可以配置链接访问权限: +表格分享入口 +公开分享表格 -- **可查看**:获得链接的人可以查看表格数据。 -- **可编辑**:登录用户可以编辑分享表格中的记录。 -- **可另存为副本**:获得链接的人可以把分享内容保存到自己的空间。 +打开表格分享后,表格内所有视图的 **分享** 按钮都会变成灰色状态。这个状态来自表格分享,不代表每个视图都已单独分享。 -还可以配置 **允许查看者复制数据**、**需要密码访问**、重新生成链接、删除分享链接和嵌入配置。 +可配置链接访问权限: -如果只需要分享当前视图,请切换到 **分享视图**。更多信息请参阅 [分享视图](/zh/basic/view/toolbar/share)。 +表格分享权限 ---- +- **可查看**:获得链接的人可以查看表格数据 +- **可编辑**:登录用户可以编辑分享表格中的记录 +- **可另存为副本**:获得链接的人可以把分享内容保存到自己的空间 + +还可以配置 **允许查看者复制数据**、**需要密码访问**、重新生成或删除链接和嵌入配置。 + +如需分享当前视图,请切换到 **分享视图**,详见 [视图工具栏](/zh/basic/view/toolbar)。 + +### 访问表格 + +新建表格默认包含[表格视图](/zh/basic/view/grid),也可通过 [API](/zh/api-doc/overview) 访问。用户可创建[看板](/zh/basic/view/kanban)等多种视图以满足不同场景需求。 + +## 搜索和下载 + +### 全局搜索 + +表格全局搜索 -## 三、 查看 +- 除文本字段外,**日期字段也可以参与全局搜索**,直接搜索日期值即可定位对应记录 +- 选择隐藏不匹配的行时,结果范围会随搜索条件一起收窄 -在 Teable Cloud 中,用户可通过两种方式访问表格: -- **[表格视图](/zh/basic/view/grid)** -- **[API 概览](/zh/api-doc/overview)** +### 附件下载 -视图是最直观的访问方式。用户可通过各种视图对表格进行操作,并构建复杂的应用。 +从附件字段菜单批量下载时,仅下载当前搜索结果中的附件。 -新添加的表格默认包含[表格视图](/zh/basic/view/grid),便于用户快速开始处理数据。 +附件批量下载入口 -### 1. 全局搜索 +在批量下载弹窗中,可通过 **附件名前缀** 选择 ZIP 内文件的命名方式:默认序号、指定字段作为前缀,或 **无前缀** 保留原始文件名;重名文件会自动追加后缀。 -- 表格支持全局搜索。除了文本类字段外,**日期字段也可以参与全局搜索**,例如直接搜索某个日期值来定位对应记录。 -- 当您使用搜索并选择隐藏不匹配的行时,当前结果范围会随搜索条件一起收窄。 -- 如果您从附件字段菜单执行批量下载,下载范围也会遵循当前搜索结果,只包含匹配记录中的附件。 -- 在附件批量下载弹窗中,可以通过 **附件名前缀** 选择 ZIP 内文件的命名方式:保留默认附件序号、选择某个字段作为前缀,或选择 **无前缀** 保留原始文件名。如果出现重名文件,Teable 会自动追加后缀,保证 ZIP 内文件名唯一。 +附件批量下载选项 -## 四、 特别注意 +## 常见问题 -- 虽然 Teable 看起来像 Excel,但它更严格。例如,**“数字”列里不能填文字**。这种约束确保了数据规范,是实现高级筛选和自动化的基础。更多细节请看 **[Teable vs Excel](/zh/compare/teable-vs-excel)** -- 在删除表格前,请检查它是否通过 **关联字段** 被其他表格引用。如果删除了源头表格,可能会导致关联表格中的数据显示异常 + + + Teable 比 Excel 更严格——每列都有固定的数据类型,数字列只能存储数字。这种约束确保了数据规范,是实现高级筛选和自动化的基础。更多细节请看 [Teable vs Excel](/zh/compare/teable-vs-excel)。 + + + 请检查该表格是否通过**关联字段**被其他表格引用。如果删除了源头表格,可能会导致关联表格中的数据显示异常。 + + diff --git a/zh/basic/table/export.mdx b/zh/basic/table/export.mdx index dfe73ce0..0758d7f7 100644 --- a/zh/basic/table/export.mdx +++ b/zh/basic/table/export.mdx @@ -1,29 +1,41 @@ --- title: "导出" -description: "用户可以将表格或视图中的数据导出为CSV格式文件。" +description: "将整张表格或当前视图中的数据导出为 CSV 文件。" --- -{/* mintlify-resync: 2026-05-14 */} -## 一、 基础操作 +Teable 支持导出整张表格,也支持只导出当前视图中显示的数据。导出文件格式为 CSV(逗号分隔值)。 -Teable 支持两个单位的数据导出,满足不同的数据获取需求。 + + + 需要完整原始数据时,导出整张表格;只需要当前视图中的数据时,导出特定视图。 + + + 导出整张表格时,在左侧目录栏打开目标表格菜单。导出视图时,切换到目标视图并打开视图菜单。 + + + 选择 **下载 CSV**,Teable 会按当前导出范围生成文件。 + + -- 格式:CSV(逗号分隔值) +## 导出流程 -### 1. 导出整张表格 (全量数据) -需要导出整个表格的所有原始数据(包括所有隐藏列和记录)。 -- **操作步骤**: - 1. 在左侧目录栏,鼠标悬停在目标表格名称上 - 2. 点击右侧出现的 `...` 按钮 - 3. 选择 **下载 CSV** +导出整张表格时,在左侧目录栏将鼠标悬停在目标表格名称上,点击右侧的 `...`,选择 **下载 CSV**。 -![](/images/2025-12-01-23-33-11.png) +导出整张表格 -### 2. 导出特定视图 (筛选后数据) -只想导出当前看到的这部分数据(例如:只导出“本月订单”或“已完成任务”),请使用视图导出。 -- **操作步骤**: - 1. 切换到目标视图(确保已应用所需的筛选、排序或隐藏列设置) - 2. 点击视图名称旁边的 `...` 菜单(或视图设置按钮) - 3. 选择 **下载 CSV** +导出特定视图时,先切换到目标视图,确认筛选、排序和隐藏字段设置符合预期,再点击视图名称旁边的 `...` 菜单,选择 **下载 CSV**。 -![](/images/2025-12-01-23-34-44.png) \ No newline at end of file +导出特定视图 + +## 注意事项 + +- **整张表格导出**:包含表格中的原始数据,包括隐藏字段和记录。 +- **视图导出**:只导出当前视图中显示的数据,适合导出已筛选、排序或隐藏字段后的结果。 diff --git a/zh/basic/table/import.mdx b/zh/basic/table/import.mdx index 2c593094..477c47a2 100644 --- a/zh/basic/table/import.mdx +++ b/zh/basic/table/import.mdx @@ -1,51 +1,63 @@ --- title: "导入" -description: "将外部的 CSV 或 Excel 文件快速迁移至 Teable。您既可以通过导入直接创建一张全新的表格,也可以将数据追加到现有的表格中,实现数据的快速初始化或增量更新。" +description: "将 CSV 或 Excel 文件导入 Teable,可创建新表格,也可追加到现有表格。" --- {/* mintlify-resync: 2026-05-14 */} +导入可用于快速初始化新表格,也可将新数据追加到已有表格。 + Excel 文件大小限制为 **5MB**。如果您需要导入更大规模的数据,先将其另存为 **CSV** 格式后再进行导入。 -## 一、 导入为新表格 - -### 1. 上传文件 -在左侧目录栏顶部,点击 `+` 号按钮,根据您的文件格式选择 `从 CSV ` 或 `从 Excel `。 - -![](/images/ji-ben-gong-neng/shu-ju-biao/440f3b346cdcdfaf.png) - -### 2. 预览与字段设置 -文件上传后,Teable会根据数据自动预测字段类型,您也可根据实际需求手动调整。 - -![](/images/2025-12-01-23-56-44.png) - -### 3. 后台处理 -点击 **导入** 后,系统将在后台异步处理数据。导入成功或失败均会发送通知。 -> **导入注意事项**:在收到系统完成通知前,请勿删除正在生成的表格,也不要修改或删除字段类型,以免影响导入结果。 + + + 创建新表格时,在左侧目录栏顶部点击 `+`,选择 `从 CSV` 或 `从 Excel`。向已有表格追加数据时,在目标表格菜单中选择 `导入数据`。 + + + 选择要导入的 CSV 或 Excel 文件。Excel 文件不要超过 **5MB**。 + + + 上传后检查预览结果。创建新表格时,可以调整字段类型;追加到已有表格时,需要确认文件列和目标字段的映射关系。 + + + 点击 **导入** 后,Teable 会在后台处理数据,并在成功或失败后发送通知。 + + -![](/images/2025-12-02-00-03-13.png) + +在收到完成通知前,请勿删除正在生成的表格,也不要修改或删除字段类型,以免影响导入结果。 + -## 二、 增量导入 +## 导入流程 -如果您已经有了一张表格,只是想把新数据(如本月新增订单)加进去,请使用增量导入。 +创建新表格时,在左侧目录栏顶部点击 `+`,根据文件格式选择 `从 CSV` 或 `从 Excel`。 -### 1. 发起导入 -在目标表格的菜单中(点击表格名右侧的 `...`),选择 `导入数据` +从菜单导入新表格 -![](/images/2025-12-02-00-04-26.png) +文件上传后,Teable 会根据前 5,000 行数据自动预测字段类型,您也可以按需调整。 -### 2. 字段映射 -上传文件后,选择要导入到表格对应字段的列,设置完成后点击导入即可。 +导入预览与字段设置 -![](/images/2025-12-02-00-06-16.png) +向已有表格追加数据时,在目标表格菜单中点击 `...`,选择 `导入数据`。 -### 3. 完成追加 -确认无误后点击导入,新数据将自动追加到当前表格。 +导入数据菜单 -![](/images/2025-12-02-00-07-42.png) +上传文件后,将文件列映射到目标表格字段,确认后点击 **导入**。Teable 会在后台处理数据,并在成功或失败后发送通知。 -## 三、 注意事项 +## 注意事项 - **首行识别**:系统默认将文件的 **第一行** 视为表头(字段名称)。请确保您的 CSV/Excel 文件第一行是清晰的列名,而非数据内容 -- **日期格式**:系统能识别常见的日期格式(如 `YYYY-MM-DD`),但如果格式过于特殊,建议在导入前统一规范化,或者先作为“文本”导入,后续再转换类型 \ No newline at end of file +- **日期格式**:系统能识别常见的日期格式(如 `YYYY-MM-DD`),但如果格式过于特殊,建议在导入前统一规范化,或者先作为“文本”导入,后续再转换类型 diff --git a/zh/basic/view/calendar.mdx b/zh/basic/view/calendar.mdx index a20c91e4..18b7b6e0 100644 --- a/zh/basic/view/calendar.mdx +++ b/zh/basic/view/calendar.mdx @@ -1,58 +1,67 @@ --- title: "日历" -description: "日历视图以日历形式展示您的数据,让您能够直观地查看和管理基于日期的记录。它特别适合管理会议安排、项目时间线、活动计划等时间相关的内容。通过日历视图,您可以轻松地查看任务分布,并进行时间管理。" +description: "用日历视图按日期查看和管理记录,适合会议、活动、排期和项目时间线。" --- -### 创建日历视图 +日历视图会把记录显示在日历中。只要记录中有单值日期字段,就可以按日期查看任务、会议、活动、发布计划或项目节点。 -1. 点击左上角的"+"按钮。 +## 适用场景 -2. 从下拉菜单中选择日历视图。 +| 场景 | 适合内容 | +| --- | --- | +| 会议和预约 | 会议时间、客户拜访、面试安排 | +| 项目排期 | 任务开始日期、截止日期、里程碑 | +| 内容计划 | 发布日期、活动日期、营销排期 | +| 跨天事项 | 有开始日期和结束日期的项目、活动或请假记录 | -### 日历视图的基本设置 +## 创建日历视图 -#### 配置日期字段 + + + 点击视图标签旁的 `+`。 + + + 在视图类型中选择 **日历视图**。 + + + 如果表格中已有合适的日期字段,Teable 会自动选择默认字段。你可以打开 **日历配置**,调整 **开始日期字段**、**结束日期字段** 或 **标题字段**。 + + -1. 点击左侧的"开始日期字段"下拉菜单。 +## 日期字段设置 -2. 选择要作为事件开始时间的日期字段。 +| 设置 | 说明 | +| --- | --- | +| 开始日期字段 | 决定记录显示在哪一天 | +| 结束日期字段 | 用于展示跨天或有持续时间的记录 | +| 标题字段 | 决定日历记录上显示的文字 | -3. 可选择"结束日期字段"来显示跨度事件。 +如果表格中没有日期字段,Teable 可能会提示你添加开始和结束日期字段。 -#### 颜色配置 +## 颜色设置 -1. 点击左侧的"颜色显示"选项。 +日历记录可以使用颜色区分不同类型。 -2. 可以选择: - - 自定义颜色:从色板中选择固定颜色 - - 根据字段:基于选择字段的值显示不同颜色 +| 颜色显示 | 说明 | +| --- | --- | +| 自定义颜色 | 为当前日历视图使用固定颜色 | +| 跟随字段颜色 | 使用单选字段的选项颜色,例如状态或类型 | -### 日历界面操作 +## 浏览日历 -#### 视图导航 -- 使用左右箭头切换月份 -- 点击"今天"快速回到当前日期 -- 显示当前年月 +- 使用左右箭头切换月份。 +- 点击 **今天** 回到当前日期。 +- 点击日历中的记录,可以打开记录详情。 -#### 事件操作 +## 创建和调整事件 -##### 创建新事件 +- 将鼠标移到日期格子上,点击 `+`,可以在该日期创建新记录。 +- 如需创建跨天事项,可以在记录详情中设置结束日期;如果开始日期和结束日期使用两个不同字段,也可以拖拽事件边缘调整持续时间。 +- 拖拽已有记录到其他日期,可以更新日期字段。 +- 右键点击记录,可以复制或删除记录。 -1. 直接点击日期格子创建新事件。 +## 注意事项 -2. 拖动选择时间段可创建跨天事件。 - -##### 编辑事件 - -1. 点击已有事件进行编辑。 - -2. 可以: - - 修改事件内容 - - 调整日期 - - 更新其他字段信息 - -##### 移动事件 - -通过拖拽可以: -- 将事件移动到其他日期 -- 调整事件持续时间(如果设置了结束日期) +- 日历视图依赖单值日期字段。删除或更改已配置的日期字段后,请检查 **日历配置**。 +- 日历视图会改变记录的展示方式。除非你在日历提示中选择添加日期字段,否则不会改变已有字段结构。 +- 新建、编辑、删除、拖拽和调整持续时间等操作会受视图、记录和字段权限影响。 diff --git a/zh/basic/view/form.mdx b/zh/basic/view/form.mdx index 895ed165..65487192 100644 --- a/zh/basic/view/form.mdx +++ b/zh/basic/view/form.mdx @@ -1,69 +1,73 @@ --- title: "表单" -description: "了解如何使用 Teable 表单从任何人那里收集信息,并自动保存到 Teable 数据库中。每次表单提交都将在创建表单视图的表中生成一条新记录。" +description: "用表单视图收集外部或内部提交,并把每次提交保存为当前表中的新记录。" --- -### 概览 +表单视图会基于当前表格生成表单。每次提交都会在创建表单视图的表中新增一条记录,适合收集反馈、报名信息、报销申请、客户资料和其他标准化数据。 -表单非常适用于记录费用、收集反馈、创建投票和测验、收集客户信息等多种用途。Teable 表单支持文件附件,在移动设备上表现良好,并能连接到 Teable API。与其他产品需要您从头开始构建表单不同,Teable 的表单视图会自动从您现有的表生成,然后允许您重新排列和移除字段。 + + + 需要条件逻辑、多步骤流程、品牌化页面或更复杂交互时,优先使用应用构建器创建提交应用。 + + + 只需要字段名称、副标题、必填和基础分享设置时,继续使用表单视图。 + + -#### 第一步:添加新的表单视图 +也可以在 [AI 对话](/zh/basic/ai/ai-chat) 中描述收集需求,让 AI 基于当前表格生成表单视图。 -要创建新的表单视图,请先导航到您将收集新数据的表。打开视图侧边栏,然后在创建标题下点击表单选项。如果您的视图创建部分已折叠,您需要首先展开它。 +## 适用场景 -#### 第二步:初始视图设置 +| 场景 | 适合内容 | +| --- | --- | +| 信息收集 | 客户资料、报名表、问卷反馈 | +| 内部申请 | 报销、采购、请假、权限申请 | +| 文件提交 | 简历、凭证、合同附件、截图 | +| 轻量流程入口 | 将外部填写内容直接沉淀到表格记录中 | -您将有机会为您正在创建的表单视图赋予一个独特的标题,并将视图设置为协作或个人。注意,在您完成初始表单视图设置后,您才能锁定表单视图。设置标题和视图权限后,点击创建新视图。 +## 创建表单视图 -#### 第三步:添加、隐藏和重新排序字段 + + + 进入用于保存提交结果的表格。 + + + 打开视图侧边栏,点击 `+`,选择 **表单视图**。 + + + 输入表单视图名称。 + + + 点击创建后,进入表单构建器继续配置字段。 + + -这将打开表单构建器,您可以在与他人分享之前进一步自定义表单。高级计划提供添加封面图片或添加标志到表单的能力。您可以通过点击头部区域并添加描述来为您的表单添加描述。 +## 配置表单字段 -表单字段将根据该表中第一个表格视图所显示的字段自动填充。 +表单字段会根据表格中的字段生成。你可以在表单构建器中调整字段显示。 -要更改表单上字段的顺序,点击一个字段并使用其拖动手柄拖动字段。 要从表单中隐藏一个字段,您可以点击您希望隐藏的字段右上角的隐藏按钮,或将字段拖放到表单构建器的左侧。 要向表单添加一个字段,从左侧拖动它到表单上。 如果您意识到想要向表单添加一个尚不存在于您的表中的字段,那么您可以点击字段侧边栏中的 + 添加字段到此表 按钮。 有时您可能需要稍后返回表单以添加或移除字段。简单返回到表单的视图并调整设置。您还可以通过点击字段、点击字段名称旁的下拉箭头并从下拉菜单中选择自定义字段类型选项来自定义字段的设置。这将打开您在表格视图中自定义字段时看到的相同字段自定义菜单。 +| 操作 | 说明 | +| --- | --- | +| 调整顺序 | 拖拽字段,改变表单中的显示顺序 | +| 隐藏字段 | 点击字段右上角的隐藏按钮,或把字段拖到左侧隐藏区域 | +| 添加字段 | 从左侧字段列表拖入表单,或点击 `+ 添加字段到此表` | +| 修改字段名称 | 点击字段后修改名称,表单中显示的名称会同步更新 | +| 字段描述 | 为字段添加描述,补充填写说明 | +| 设置必填 | 开启必填后,填写者必须完成该字段才能提交 | -#### 第四步:定制表单字段 +## 表单外观 -除了定制哪些字段将出现在您的表单及其顺序外,您还可以调整字段对最终用户显示的方式。点击表单构建器中的任何字段都将弹出许多显示选项。对于所有字段类型,您可以更改字段在表单上显示的名称并添加副标题以提供有用的上下文。某些字段类型提供额外的显示设置选项,这些选项将在下面的部分中介绍。 +表单外观支持配置封面图片、Logo 和提交按钮文字。封面区域会按固定高度展示,重要文字或关键信息不适合放在容易被裁剪的图片中。 -您还可以切换必填选项,以使填写某个字段成为提交表单前的必要条件。请注意,如果您使复选框字段成为必填项,那么为了提交表单,必须勾选该复选框。 +## 分享表单 -#### 第五步:分享表单 URL +表单配置完成后,点击表格右上角的 **分享表单**,复制表单链接并发送给填写者。也可以点击预览,在浏览器中查看实际提交页面。 -完成表单构建后,您可以点击视图栏中的分享表单按钮。这将给您一个链接,您可以复制并粘贴。点击预览按钮也将直接将您带到浏览器中的表单分享链接。下面的部分将覆盖更多的表单分享选项。 +## 提交设置 -### 其他表单配置选项 +| 设置 | 说明 | +| --- | --- | +| 设置密码 | 填写者需要输入正确密码后才能提交 | +| 查看提交表单的人 | 要求填写者登录 Teable,并把提交者信息记录到创建者字段 | -#### 添加封面图片 - -要添加封面图片(需高级计划),点击灰色区域中的添加封面图片并上传所需图片。您还可以在文件选择器中裁剪或旋转图片。请注意,表单封面图片的区域总是 240px 高,宽度是您浏览器窗口的宽度。最好使用封面图片作为背景图形,并为您的表单添加有趣的触感,而不是用于可能会被裁剪掉的重要信息。 - -#### 添加密码 - -在分享表单的时候,可以选择设置密码,此时只有输入正确的密码之后才可以提交表单。 - -#### 查看提交表单的人 - -打开此功能将自动收集表单提交者的用户信息,以便可以追踪表单响应到特定人员。关于预期行为的几点说明: - -* 表单提交者将被要求登录到 Teable(如果他们在浏览器上还没有登录)或创建一个 Teable 用户账户,以便他们的姓名和电子邮件地址可以与他们的表单提交一起收集。 - -* 响应者的信息将出现在创建表单的表中的"创建者"字段中。 - -### 条件逻辑表单方案 - -#### 方案选择 - -- **表单视图(基础)**:适合轻量收集,支持字段显示名修改、副标题、必填设置等基础配置(详见上方第四步)。 - -- **App Builder(进阶,推荐)**:适合更丰富的提交体验,例如条件逻辑、多步骤流程、品牌化页面与更复杂的交互。 - - **条件逻辑**:如果你需要根据条件动态显示或隐藏后续字段,推荐使用 [Teable AI App Builder](/zh/basic/ai/app-builder) 搭建提交页面:先生成基础版本,再逐步完善流程、样式与交互细节。 - - **Prompt to App**:先用一句话把页面搭起来,再按需求逐步调整细节。 - - **从数据库创建**:在任意数据库中点击 **创建应用**,生成一个与当前数据关联的应用。 - - **从 AI Chat 创建**:打开 [AI Chat](/zh/basic/ai/ai-chat),让 AI 为当前表创建一个应用(例如:"为这个表创建一个信息收集提交应用")。应用创建完成后,再在应用构建器中继续编辑与迭代。 - - **发布并分享**:完成后发布应用,即可获得安全的公开访问链接。 - -> **应用构建器与 AI Chat 的区别**:应用构建器用于创建自定义界面和独立应用。如果在数据库内部进行交互式数据分析和临时提问,请使用 [AI Chat](/zh/basic/ai/ai-chat)。 - -想进一步了解 Teable 的 AI 工作流,请查看 [AI 概览](/zh/basic/ai/overview)。 +开启“查看提交表单的人”后,未登录的填写者需要登录或创建 Teable 账户后才能提交。 diff --git a/zh/basic/view/gallery.mdx b/zh/basic/view/gallery.mdx index 21f4d78c..3ae7fb40 100644 --- a/zh/basic/view/gallery.mdx +++ b/zh/basic/view/gallery.mdx @@ -1,61 +1,63 @@ --- title: "画册" -description: "画册视图是一种以图片网格形式展示数据的视图类型,特别适合管理和展示图片相关的内容。它能让您以视觉化的方式浏览所有包含图片的记录,非常适合设计作品集、产品目录、照片库等场景的管理。" +description: "用画册视图以图片卡片展示记录,适合产品目录、素材库和作品集。" --- -### 创建画册视图 +画册视图会把记录展示为图片卡片。它适合以图片为主要内容的表格,比如产品图片、设计稿、活动素材、照片库或作品集。 -1. 点击创建新视图的按钮。 +## 适用场景 -2. 从下拉菜单中选择画册视图。 +| 场景 | 适合内容 | +| --- | --- | +| 产品目录 | 商品图片、型号、价格、状态 | +| 素材管理 | 设计稿、活动素材、广告图、截图 | +| 作品集 | 项目封面、案例图、设计作品 | +| 图片审核 | 按状态、负责人或标签筛选图片记录 | -3. 配置画册视图的卡片设置、筛选和排序等选项。 +## 创建画册视图 -### 画册视图的基本操作 + + + 点击视图标签旁的 `+`。 + + + 在视图类型中选择 **画册视图**。 + + + 进入视图后,使用 **卡片配置**、筛选和排序调整记录展示方式。 + + -#### 配置封面图片 +## 设置封面图片 -1. 点击工具栏中的"卡片设置"按钮。 +画册视图可以使用附件字段作为卡片封面。如果表格中已有附件字段,Teable 会默认选择一个附件字段。 -2. 选择要作为封面显示的附件字段。 +| 设置 | 说明 | +| --- | --- | +| 封面字段 | 选择作为卡片封面的附件字段,也可以选择 **无封面** | +| 多个附件 | 所选附件字段中有多个文件时,卡片会先显示第一个文件,也可以通过卡片上的轮播控件切换其他文件 | +| 适应 | 开启后完整显示图片;关闭后图片会填满封面区域,可能被裁剪 | -3. 如果一条记录包含多张图片,将默认使用第一张图片作为封面。 +## 配置卡片信息 -#### 调整图片大小 +点击工具栏中的 **卡片配置**,可以选择卡片上显示哪些字段、调整字段顺序,并开启或关闭 **隐藏字段名**。 -您可以通过视图设置调整图片的显示大小: +建议只保留识别记录所需的关键字段,比如名称、状态、负责人、价格或标签。字段过多会降低画册视图的浏览效率。 -1. 点击工具栏中的"卡片设置"按钮。 +## 查看和编辑图片 -2. 开启或关闭“适应”开关 +- 点击封面图片,可以打开预览。 +- 在预览模式下,可以切换文件、缩放或旋转图片,也可以下载文件。 +- 点击卡片主体,可以打开记录。 -#### 自定义卡片信息 +## 管理记录 -1. 点击工具栏中的"卡片设置"按钮。 +- 点击工具栏中的 **添加记录**,可以添加记录。如果有附件字段,可以在记录编辑器中上传文件。 +- 右键点击卡片,可以删除记录或执行其他记录操作。 +- 配合筛选和排序,可以按状态、分类或负责人管理图片记录。 -2. 选择需要在图片下方显示的字段信息。 +## 注意事项 -3. 您可以调整字段的显示顺序,以及是否显示字段名称。 - -#### 图片操作 - -1. 点击图片可以查看大图。 - -2. 在大图模式下,可以: - - 左右滑动浏览其他图片 - - 使用缩放功能查看图片细节 - - 下载原图 - -#### 记录管理 - -1. 添加新记录: - - 点击界面底部的"新建"按钮 - - 上传图片并填写相关信息 - -2. 编辑记录: - - 点击图片下方的信息区域 - - 在弹出的编辑框中修改相关内容 - -3. 删除记录: - - 右键点击图片,选择"删除记录" - - 或在编辑模式下使用删除选项 +- 画册视图适合以附件图片为核心的表格。如果记录主要是文本或数字,表格视图通常更高效。 +- 画册视图中的字段显示配置只影响当前视图,不会删除字段内容。 +- 新建、编辑、删除和文件操作会受视图、记录和字段权限影响。 diff --git a/zh/basic/view/grid.mdx b/zh/basic/view/grid.mdx index 4133881f..6d714606 100644 --- a/zh/basic/view/grid.mdx +++ b/zh/basic/view/grid.mdx @@ -1,45 +1,106 @@ --- title: "表格" -description: "表格视图是 Teable 中的一种数据展示方式,它以表格的形式呈现数据,每个记录占据一行,每个字段占据一列。表格视图可以用于查看、编辑和分析数据。" +description: "表格视图以行和列展示记录,适合查看、编辑和整理结构化数据。" --- {/* mintlify-resync: 2026-05-14 */} -## 一、 操作 +表格视图是 Teable 中最常用的视图。每条记录占一行,每个字段占一列,适合进行日常数据录入、批量编辑、排序、筛选和统计。 -### 1. 创建视图 -每个新建的表格默认都会自带一个“表格视图”。如需创建额外的视图(例如用于不同场景的筛选结果): -- **步骤**:点击视图侧边栏顶部的 `+` 号,选择 **表格视图** 类型,输入名称即可创建。 +## 适用场景 -### 2. 字段管理(隐藏与排序) -- **隐藏字段**:点击工具栏上的 `字段配置` 按钮,在弹出的列表打开/关闭字段显示,即可控制哪些列显示、哪些列隐藏。 -- **字段排序**:直接按住表头的字段名进行左右拖拽,即可调整列的顺序。 +| 场景 | 适合做法 | +| --- | --- | +| 日常数据维护 | 在表格中直接录入、编辑和复制粘贴记录 | +| 批量整理数据 | 结合筛选、分组、排序和隐藏字段管理大量记录 | +| 快速检查数据 | 用选区统计查看数值字段的平均值、已填写和求和 | +| 查看宽表 | 冻结关键列,横向滚动时保留主要识别信息 | -## 二、 查看 +## 创建表格视图 -表格视图支持灵活调整显示密度,以适应不同的阅读需求。您可以通过隐藏字段、过滤记录、分组记录、排序记录等方式进一步配置视图。 +每个新建表格都会自带一个表格视图。需要为不同场景创建额外表格视图时,可以按下面操作: -### 1. 调整行高 -点击工具栏上的 `行高` 图标,可在四种高度中切换: -- **短 **:默认高度,信息密度最大,适合快速浏览大量数据 -- **中/高/超高**:随着高度增加,单元格内的内容(如多行文本、图片缩略图、多选标签)将展示得更加完整,适合需要查看细节的场景 + + + 进入目标表格,打开左侧视图列表。 + + + 点击视图侧边栏顶部的 `+`,选择 **表格视图**。 + + + 输入视图名称,按需设置协作方式,然后创建视图。 + + -> 如果您希望视图配置不会被意外更改,您可以锁定视图,这将防止所有协作者更改视图的配置(包括隐藏字段、过滤记录、分组记录、排序记录等),只有拥有权限的用户才能解锁。 +## 显示设置 -### 2. 冻结列 -当表格横向内容较多时,您可以“冻结”特定的列,使其在横向滚动时始终固定在左侧。 -- 将鼠标移动到列分割线上(通常在第一列右侧有一条较粗的分隔线),按住并拖动该分割线,即可将左侧的所有列冻结 -- 右键点击表头,在菜单中选择"冻结至此字段",即可将该字段及其左侧的所有列冻结 +### 管理字段显示 -### 3. 选区统计 +隐藏字段工具 -选区时,Teable 会显示数值字段的 **平均值**、**已填写** 和 **求和**。 +| 操作 | 说明 | +| --- | --- | +| 隐藏字段 | 点击工具栏中的 **字段配置**,打开或关闭字段显示 | +| 调整字段顺序 | 按住表头字段名左右拖拽,调整列的位置 | +| 查找字段 | 字段较多时,在字段配置中搜索字段名称 | -## 三、 交互 +隐藏字段只影响当前视图的显示,不会删除字段或记录内容。 -### 1. 单元格操作 -- **快速编辑**:点击任意单元格即可输入。 -- **查看长内容**:对于被截断的长文本,可以直接双击单元格或选中后按 **空格键**,即可展开查看完整内容。 +### 调整行高和字段名高度 -### 2. 批量处理 -- **拖拽填充**:选中单元格右下角的填充柄向下拖拽,可快速复制数据。 -- **多选操作**:按住 Shift 或 Ctrl 键可选中多个单元格,进行批量操作。 +点击工具栏中的 **行高**,可以调整表格视图的显示密度。 + +表格视图行高菜单 + +- **行高**:选择短、中、高或超高,调整记录行的高度。 +- **字段名**:选择 1 行、2 行或 3 行,控制列名在表头中的显示高度。 + +### 冻结列 + +表格字段较多时,可以冻结左侧关键列,让它们在横向滚动时保持可见。 + +表格视图冻结分隔线 + +- 拖动表格左侧的冻结分隔线,可以冻结分隔线左侧的列。 + +表格视图冻结至此字段菜单 + +- 右键点击表头,选择 **冻结至此字段**,可以冻结该字段及其左侧字段。 + +## 编辑和检查数据 + +### 编辑和批量操作 + +- **编辑单元格**:点击任意单元格即可输入或修改内容。 +- **查看长内容**:双击单元格,或选中后按空格键,可以展开查看完整内容。 +- **拖拽填充**:选中单元格右下角的填充柄并向下拖拽,可以复制数据。 + +### 选区统计 + +表格视图选区统计 + +选中一组单元格后,Teable 会在底部显示数值字段的 **平均值**、**已填写** 和 **求和**,适合快速核对金额、数量和评分。 + +## 注意事项 + +- 表格视图中的隐藏字段、排序、筛选、分组等配置只影响当前视图。 +- 如果不希望协作者修改视图配置,可以锁定视图;只有有权限的用户才能解锁或修改配置。 diff --git a/zh/basic/view/kanban.mdx b/zh/basic/view/kanban.mdx index 3c058530..b538d9e6 100644 --- a/zh/basic/view/kanban.mdx +++ b/zh/basic/view/kanban.mdx @@ -1,107 +1,76 @@ --- title: "看板" -description: "看板视图提供了一种动态的方式来管理数据,它将不同记录以卡片的形式展示在看板上,这种直观的布局可以更清晰得反馈任务的状态或优先级。总体而言,看板视图可帮助您实现工作内容可视化,并最大限度提高效率,非常适合项目管理和工作流程的跟踪。" +description: "用看板视图把记录按分组字段展示为卡片,适合跟进状态、阶段和工作流。" --- -### 创建看板视图 +看板视图会把记录显示为卡片,并按字段值分成不同列。它适合管理任务状态、销售阶段、内容流程、招聘进度等需要按阶段推进的工作。 -1. 点击创建新视图的按钮。 +## 适用场景 -2. 从下拉菜单中选择看板视图。 +| 场景 | 适合内容 | +| --- | --- | +| 项目任务 | 按未开始、进行中、已完成查看任务 | +| 销售流程 | 按线索、新商机、谈判、成交管理客户 | +| 内容排期 | 按选题、撰写、审核、发布跟进内容 | +| 招聘流程 | 按初筛、面试、Offer、入职管理候选人 | -3. 现在您可以配置看板视图的分组设置、卡片设置、筛选和排序等配置。 +## 创建看板视图 -### 看板分组相关的操作 + + + 点击视图标签旁的 `+`。 + + + 在视图类型中选择 **看板视图**。 + + + 选择用于分列的字段,比如状态、阶段、负责人或日期。 + + -#### 更改分组依据 +## 分组设置 -支持除附件字段外的所有字段作为分组依据。 +看板视图支持使用大多数字段作为分组依据,但附件字段和按钮字段不可作为分组字段。 -1. 点击分组标题旁的下拉图标。 +| 操作 | 说明 | +| --- | --- | +| 更改分组字段 | 点击工具栏中的 **分组依据 [字段]**,选择新的分组字段 | +| 隐藏空的分组 | 在分组设置中开启 **隐藏空的分组** | +| 折叠分组 | 在分组菜单中选择 **折叠分组**,分组会显示为竖向条 | +| 排序分组 | 使用单选字段分组时,可以拖拽分组调整顺序 | -2. 从弹出的对话框中选择一个分组字段,或创建一个新的分组字段。 +## 管理分组 -3. 如果希望隐藏空的分组,可以启用 “隐藏空分组” 选项。 +当分组字段是单选字段时,可以直接在看板中管理选项: -4. 点击 “完成” 保存更改。 +- 点击 **添加分组** 创建新选项。 +- 在分组菜单中选择 **重命名分组** 修改选项名称。 +- 在分组菜单中选择 **删除分组** 删除选项。 -#### 折叠分组 +这些操作会影响对应的单选字段选项,请在修改前确认不会影响其他视图或流程。 -1. 点击分组标题旁的下拉图标。 +## 配置卡片 -2. 在下拉菜单中选择 “折叠分组”。 +点击工具栏中的 **卡片配置**,可以控制卡片显示内容。 -3. 折叠的分组将以垂直条的形式在看板视图中显示。 +| 设置 | 说明 | +| --- | --- | +| 显示字段 | 选择哪些字段显示在卡片上 | +| 字段顺序 | 调整字段在卡片中的显示顺序 | +| 封面 | 选择附件字段作为卡片封面 | +| 隐藏字段名 | 只显示字段值,减少卡片信息密度 | -#### 添加新分组 +建议只显示判断记录状态所需的字段,比如标题、负责人、截止日期、优先级和关键标签。 -当分组字段为单选字段时,可以添加新的分组。 +## 移动和编辑卡片 -1. 点击 “添加分组” 按钮。 +- 拖拽卡片,可以调整顺序或移动到其他分组。 +- 点击分组底部的 `+`,可以打开新建记录窗口。如需让新记录显示在该分组中,请在新建记录时设置对应的分组字段值。 +- 右键点击卡片,可以在上方或下方插入卡片、展开卡片或删除卡片。 +- 点击卡片或选择 **展开卡片**,可以打开记录详情。 -2. 填写新分组的相关信息,点击焦点区域外或按下回车键完成添加操作。 - -#### 重命名分组 - -当分组字段为单选字段时,可以重命名分组。 - -1. 点击分组标题旁的下拉图标。 - -2. 从下拉菜单中选择 “重命名分组”。 - -#### 删除分组 - -当分组字段为单选字段时, 可以删除分组。 - -1. 点击分组标题旁的下拉图标。 - -2. 从下拉菜单中选择 “删除分组”。 - -#### 排序分组 - -当分组字段为单选字段时,可以重新排序分组。 - -您可以通过拖动分组到所需位置来重新排序分组。 - -### 卡片相关的操作 - -#### 自定义卡片配置 - -1. 点击工具栏中的 “卡片配置” 菜单。 - -2. 在弹出框中开启(或关闭)各个字段,以在每张卡片上显示或隐藏这些字段。 - -3. 您还可以使用 “查找字段” 框搜索进行字段的搜索。 - -4. 您可以点击 “隐藏全部” 或 “显示全部” 来显示或隐藏所有字段。 - -5. 此外,您还可以在弹出对话框的底部设置需要显示的封面和 “是否隐藏字段名称” 选项。 - -#### 移动卡片 - -您可以通过拖放卡片来进行排序或切换分组。 - -#### 添加新的卡片 - -1. 点击分组底部的 “+” 按钮。 - -2. 点击之后,会展开新纪录的卡片详情,您可以在其中输入数据以保存更改。 - -#### 插入新的卡片 - -1. 右击卡片以访问卡片菜单。 - -2. 选择 “在上方插入卡片” 或 “在下方插入卡片” 选项。 - -#### 编辑卡片 - -1. 直接点击卡片或右击卡片呼出菜单,然后选择 “展开卡片” 选项。 - -2. 现在您可以在展开卡片中编辑当前卡片的数据。 - -#### 删除卡片 - -1. 右击卡片以访问卡片菜单。 - -2. 选择 “删除卡片” 选项。 +## 注意事项 +- 将卡片拖到其他分组时,Teable 会更新对应分组字段的值。 +- 新建、编辑、删除和拖拽等操作会受视图、记录和字段权限影响;如果分组字段是计算字段或只读字段,卡片也不能拖拽到其他分组。 +- 如果看板用于团队协作,建议锁定关键视图,避免分组字段和卡片配置被误改。 diff --git a/zh/basic/view/toolbar.mdx b/zh/basic/view/toolbar.mdx new file mode 100644 index 00000000..53026867 --- /dev/null +++ b/zh/basic/view/toolbar.mdx @@ -0,0 +1,233 @@ +--- +title: "视图工具栏" +description: "使用筛选、分组、排序、分享和视图协作配置当前视图。" +--- + +视图工具栏用于调整当前视图的显示方式和分享方式。筛选、分组、排序、字段显示、行高等配置只影响当前视图,不会删除记录,也不会修改其他视图。 + +每个视图的筛选、分组和排序设置相互独立。在一个视图中的配置不会影响其他视图。 + +## 工具概览 + +| 工具 | 用途 | 常见场景 | +| --- | --- | --- | +| 筛选 | 只显示符合条件的记录 | 查看待处理任务、自己的记录、指定时间范围内的数据 | +| 分组 | 按字段值把记录聚成分组 | 按负责人、状态、日期查看工作量或进度 | +| 排序 | 根据字段值排列记录 | 查看最近更新、任务优先级、销售金额排名 | +| 分享 | 把当前视图发布为链接 | 分享经过筛选、排序、隐藏字段或布局处理后的结果 | +| 视图协作 | 控制视图配置对所有人同步,还是只对自己生效 | 临时调整视图,或维护团队共用视图 | + +## 筛选 + +筛选用于从当前视图中找出符合条件的记录。筛选隐藏的是不符合条件的记录,不会删除记录。 + + + + 点击视图工具栏中的 `筛选`。 + + + 选择字段、操作符和比较值。 + + + 多个条件可以选择 **满足所有条件** 或 **满足任一条件**。 + + + +| 条件关系 | 说明 | +| --- | --- | +| 满足所有条件 | 当前层级中的所有条件都满足时,记录才会显示 | +| 满足任一条件 | 当前层级中满足任意一个条件时,记录就会显示 | + +视图筛选条件 + +### 条件分组 + +筛选逻辑比较复杂时,可以使用 **条件分组**。比如需要表达“满足 A 和 B,或者满足 C 和 D”,就可以把条件拆成两个分组。 + +- 点击 `添加条件组` 创建分组。 +- 条件组可以使用 **满足所有条件** 或 **满足任一条件**。 +- 分组内部还可以继续嵌套分组。 +- 条件分组最多支持 **3 层** 嵌套。 + +视图筛选条件组 + +### 常见筛选操作符 + +| 字段类型 | 常用操作符 | 输入方式 | +| --- | --- | --- | +| 单行文本、多行文本 | 等于、不等于、包含、不包含、为空、不为空 | 文本输入 | +| 成员 | 等于、不等于、包含任一、不包含任一、为空、不为空 | 成员列表、当前用户 | +| 附件 | 为空、不为空 | 无需输入 | +| 多选 | 包含任一、包含所有、完全匹配、不包含任一、为空、不为空 | 选项列表 | +| 单选 | 等于、不等于、包含任一、不包含任一 | 选项列表 | +| 日期、创建时间、修改时间 | 等于、不等于、在之内、之前、之后、在或之前、在或之后、为空、不为空 | 预设范围或具体日期 | +| 数字、评分、自动编号 | `=`、`≠`、`>`、`≥`、`<`、`≤`、为空、不为空 | 数字 | +| 关联 | 等于、不等于、包含、不包含、包含任一、包含所有、完全匹配、不包含任一、为空、不为空 | 关联记录选择 | +| 创建人、修改人 | 等于、不等于 | 成员列表、当前用户 | + +公式和汇总字段的操作符取决于结果类型。 + +### 无效条件提示 + +如果字段类型变更、字段被删除,或旧筛选配置不再兼容,Teable 会忽略失效条件,让视图仍然可以打开。 + +- 工具栏中的 `筛选` 按钮会显示警告图标。 +- 打开筛选面板后,失效条件旁会显示提示图标。 +- 将鼠标悬停在提示图标上,可以查看原因并修正条件。 + +## 分组 + +分组用于按字段值聚合记录,适合快速查看分布、汇总和层级结构。 + + + + 点击视图工具栏中的 `分组`。 + + + 选择要用于分组的字段。 + + + 需要多层分组时,点击 `添加另一个分组`。 + + + +| 字段类型 | 使用建议 | +| --- | --- | +| 单选、多选 | 适合按状态、优先级、类型等固定选项分组 | +| 成员 | 适合按负责人、协作者或提交人分组 | +| 日期 | 适合按时间段查看记录 | +| 复选框、关联、数字、评分 | 适合按明确的值或结果分组 | + +- 分组最多支持 **3 层**。 +- 分组后可以按组折叠或展开,组内仍然按当前排序显示。 +- 每个分组顶部会显示汇总栏,便于查看这一组的统计结果。 +- 空值会单独放进未分类、未分配或空分组,具体名称取决于字段类型。 + +## 排序 + +排序用于根据字段值重新排列记录。排序只影响当前视图的显示顺序,不会修改记录内容。 + + + + 点击视图工具栏中的 `排序`。 + + + 选择要排序的字段。 + + + 选择升序或降序。需要多级排序时,继续添加排序条件。 + + + +多级排序会按条件顺序执行。Teable 会先按第一个条件排序;如果第一个条件的值相同,再按第二个条件排序。 + +| 字段类型 | 排序方式 | +| --- | --- | +| 文本、附件 | 按字母顺序或反向顺序排序。附件按文件名排序 | +| 数字、持续时间、评分 | 按数值升序或降序排序 | +| 日期、创建时间、修改时间 | 按时间从早到晚或从晚到早排序 | +| 复选框 | 按未勾选到已勾选,或反向排序 | +| 单选、多选 | 按字段配置中的选项顺序排序,也可以反向排序 | + +公式和汇总字段的排序方式由结果类型决定。 + +排序菜单中可以控制 `自动排序` 开关。 + +| 状态 | 行为 | +| --- | --- | +| 开启 | 记录会持续按照排序规则排列。修改字段值后,记录会自动移动到新的位置;此时不能手动拖拽记录 | +| 关闭 | 记录只会在点击 `重新应用` 后重新排序。你可以手动拖拽记录,数据更新后也不会自动移动 | + +## 分享视图 + +**分享视图**用于把当前视图发布成链接。访问者看到的是这个视图中的数据和布局,不等同于被邀请成为数据库协作者。 + +如果需要分享整个数据库、指定表格或文件夹,请在 [数据库](/zh/basic/base) 中使用数据库分享。 + +| 分享方式 | 适合场景 | +| --- | --- | +| 分享表 | 让外部人员访问当前表格,适合更完整的表格协作或查看 | +| 分享视图 | 只公开当前视图,适合分享经过筛选、排序、分组、隐藏字段或特定布局处理后的结果 | + +视图分享链接会跟随当前视图配置变化。后续如果你修改了筛选、排序、分组、隐藏字段或视图布局,分享链接中看到的内容也会变化。 + + + + 进入要分享的视图。 + + + 点击视图工具栏中的 **分享**。 + + + 选择 **分享视图**。 + + + 打开 **公开分享视图到网络**。 + + + 复制生成的链接,或使用二维码分享。 + + + +如果你没有视图分享权限,分享开关会不可用。关闭 **公开分享视图到网络** 后,已有分享链接将无法继续访问。 + +公开链接可能被转发。开启前请确认当前视图中没有不应公开的字段或记录。 + +不同视图类型会显示不同的高级选项。 + +| 选项 | 适用范围 | 说明 | +| --- | --- | --- | +| 允许拷贝视图数据 | 表格视图 | 控制访问者是否可以从分享的表格视图中复制数据 | +| 显示展开记录中的所有字段 | 表格视图 | 控制访问者打开记录详情时,是否可以看到当前视图隐藏的字段 | +| 设置访问密码 | 所有视图分享 | 给分享链接加密码,访问者需要输入正确密码后才能打开 | +| 需要登录提交 | 表单视图 | 要求访问者登录后才能提交表单 | + +分享视图可以嵌入到其他网页。点击 **嵌入配置** 后,可以预览嵌入效果、复制 iframe 代码,并设置是否隐藏工具栏和使用哪种主题。 + +```html + +``` + +| 嵌入选项 | 说明 | +| --- | --- | +| 隐藏工具栏 | 在链接中加入 `hideToolBar=true`,隐藏分享页中的筛选、排序、搜索等工具栏。不适用于表单视图 | +| 主题 | 支持跟随系统、浅色和深色 | + +## 视图协作 + +视图协作用于决定视图配置是同步给所有人,还是只作为你的个人调整保留。它只影响筛选、排序、分组、字段显示、行高等视图配置,不影响记录内容。 + +| 模式 | 适合场景 | 配置影响 | +| --- | --- | --- | +| 协作模式 | 团队需要共用同一套视图配置 | 视图配置会同步给所有正在使用这个视图的人 | +| 个人模式 | 临时调整视图,或只按自己的习惯查看数据 | 筛选、排序、分组、字段显示和行高只对你自己生效 | + +点击工具栏里的 `个人`,可以在协作模式和个人模式之间切换。 + +如果视图没有锁定,并且你有更新视图的权限,关闭个人模式时可以选择如何处理个人调整。 + +| 选项 | 结果 | +| --- | --- | +| `退出并同步` | 把个人模式中的视图配置同步给所有人 | +| `确认退出` | 放弃个人模式中的视图配置,只退出个人模式 | + +如果视图已经锁定,或你没有修改视图的权限,只能在个人模式下临时调整自己的视图,不能把这些调整同步给别人。 + +## 注意事项 + +- 修改筛选、分组、排序、字段显示或行高会影响当前视图中所有使用该视图的协作者,除非你正在使用个人模式。 +- 分享视图公开的是当前视图结果,不是完整数据库权限。需要长期协作时,请使用成员权限或数据库分享。 +- 在任何模式下,修改单元格内容都会同步给所有人。 diff --git a/zh/basic/view/toolbar/collaboration-mode.mdx b/zh/basic/view/toolbar/collaboration-mode.mdx deleted file mode 100644 index ba5200e6..00000000 --- a/zh/basic/view/toolbar/collaboration-mode.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: "视图协作" -description: "协作模式下,视图配置对所有人同步;个人模式下,只对你自己生效。" ---- - -- **协作模式**:视图配置会实时同步给所有正在使用这个视图的人。 -- **个人模式**:你的筛选、排序、分组、字段显示和行高只对自己可见。 - -## 一、 切换协作模式 - -- 点击工具栏里的 `个人`,就可以在两种模式之间切换。 -- 如果视图没有锁定,而且你有更新视图的权限时,关闭个人模式时会出现两个选择: - - `退出并同步`:把你在个人模式里的改动同步给所有人 - - `确认退出`:放弃个人模式里的改动,只退出个人模式 -- 如果视图已经锁定,或你没有修改视图的权限,只能用个人模式做自己的临时调整,不能把改动同步给别人。 - -> 如果当前视图被 **锁定**,系统会提示您进入个人模式,以便您在不解锁视图的情况下也能调整视图配置查看数据。 -## 三、 说明 - -- 这个模式只影响视图配置,不影响记录内容。 -- 在任何模式下,修改单元格内容都会同步给所有人。 diff --git a/zh/basic/view/toolbar/filter.mdx b/zh/basic/view/toolbar/filter.mdx deleted file mode 100644 index f36e7d9e..00000000 --- a/zh/basic/view/toolbar/filter.mdx +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: "筛选" -description: "筛选用于设定条件,从表格中快速找出符合要求的数据集合" ---- - -每个视图的排序、筛选和分组设置相互独立。在一个视图中的配置不会影响其他视图。 - -## 一、 添加筛选 - -### 1. 添加筛选条件 -- 点击工具栏的 `筛选`,设置筛选条件 -- 当添加多个条件时,需要选择它们的关系: - - **且**:所有条件**同时满足** - - **或**:满足**任意一个**条件 -逻辑操作 - -### 2. 条件分组 - -应对复杂场景(如:“A且B,或者C且D”),可以使用 **条件分组**。 -- 通过 `添加条件组`,你可以创建条件分组,并用“与”或“或”连接条件。 -- 分组内部可以嵌套更多分组,实现复杂筛选逻辑。 -- 条件分组最多支持 **3 层** 嵌套。 - -条件分组示例 - -### 3. 无效条件提示 - -如果已有筛选条件因为字段类型变更、字段被删除,或旧配置不再兼容而失效,Teable 会自动忽略这些无效条件,视图仍可正常打开。 -- 工具栏中的 `筛选` 按钮会显示警告图标,提示当前筛选中有需要处理的条件 -- 打开筛选面板后,对应条件旁也会显示提示图标;将鼠标悬停在图标上可查看说明并修正条件 - -## 二、 字段类型与操作符 - -不同类型的字段支持不同的筛选逻辑。以下是常见字段类型的操作符速查表: - -| 字段类型 | 支持的操作符 | 输入数据 | -| ---- | ---- | ---- | -| 单行文本 | 等于、不等于、包含、不包含、为空、不为空 | 文本输入 | -| 长文本 | 等于、不等于、包含、不包含、为空、不为空 | 文本输入 | -| 用户 | 等于、不等于、包含任一、不包含任一、为空、不为空 | 用户选择列表,以及当前用户 | -| 附件 | 为空、不为空 | - | -| 多选 | 包含任一、包含所有、完全匹配、不包含任一、为空、不为空 | 选项选择列表 | -| 单选 | 等于、不等于、包含任一、不包含任一 | 选项选择列表 | -| 日期 | 等于、不等于、在之内、之前、之后、在或之前、在或之后、为空、不为空 | 预设范围列表,精准日期选择框 | -| 数字 | =、≠、>、≥、\<、≤、为空、不为空 | 数字 | -| 评分 | 等于、不等于、大于、大于等于、小于、小于等于、为空、不为空 | 数字 | -| 数字 | 等于、不等于、大于、大于等于、小于、小于等于、为空、不为空 | 数字 | -| 关联 | 等于、不等于、包含、不包含、包含任一、包含所有、完全匹配、不包含任一、为空、不为空 | 关联值选择框 | -| 创建时间 | 等于、不等于、在之内、之前、之后、在或之前、在或之后、为空、不为空 | 预设范围列表,精准日期选择框 | -| 修改时间 | 等于、不等于、在之内、之前、之后、在或之前、在或之后、为空、不为空 | 预设范围列表,精准日期选择框 | -| 创建者 | 等于、不等于 | 用户选择列表,以及当前用户 | -| 修改者 | 等于、不等于 | 用户选择列表,以及当前用户 | -| 自动编号 | =、≠、>、≥、\<、≤ | 数字 | -| 按钮 | - | - | - - -公式和汇总字段的操作符由其结果类型决定,这可能包括上述所有操作符。 diff --git a/zh/basic/view/toolbar/group.mdx b/zh/basic/view/toolbar/group.mdx deleted file mode 100644 index 6a23d7a5..00000000 --- a/zh/basic/view/toolbar/group.mdx +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "分组" -description: "按字段把记录聚成分组,适合快速查看分布、汇总和层级结构。" ---- - -每个视图的排序、筛选和分组设置相互独立。在一个视图中的配置不会影响其他视图。 - -## 一、 配置入口 - -- 点击工具栏的 `分组`。 -- 在分组面板里点 `添加另一个分组`,可以继续叠加分组条件。 - -## 二、 你会得到什么 - -- 分组最多支持 **3 层** 嵌套。 -- 分组后可以按组折叠或展开,组内仍然按当前排序显示。 -- 分组顶部会显示汇总栏,便于直接查看每组的分布和统计结果。 - -## 三、 适合什么字段 - -- 单选、多选、成员、日期、勾选、关联、数字、评分都可以分组。 -- 空值会单独放进未分类、未分配或空分组,具体名称取决于字段类型。 -- 文本字段也能分组,但通常会生成很多组,不适合大表。 diff --git a/zh/basic/view/toolbar/share.mdx b/zh/basic/view/toolbar/share.mdx deleted file mode 100644 index 543428bd..00000000 --- a/zh/basic/view/toolbar/share.mdx +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: "分享" -description: "把当前视图公开为链接,并配置复制、密码、嵌入和主题选项。" ---- - -{/* mintlify-resync: 2026-05-14 */} -**分享视图**用于把当前视图发布成一个公开链接。获得链接的人可以访问这个视图中的数据,但不能直接修改原表格记录。 - - -如果需要分享整个数据库、指定表格或文件夹,而不是只分享当前视图,请在 [数据库](/zh/basic/base) 中使用数据库分享。 - - -## 一、 视图分享和表格分享的区别 - -在表格的分享入口中,当前表格通常会同时出现 **分享表** 和 **分享视图** 两个选项: - -| 分享方式 | 适合场景 | -|------|------| -| **分享表** | 分享当前表格,适合让外部人员访问更完整的表格内容。 | -| **分享视图** | 只分享当前视图,适合只公开一个经过筛选、排序、隐藏字段或特定布局处理后的结果。 | - -视图分享链接只允许访问当前视图。后续如果你修改了这个视图的配置,例如筛选、排序、分组、隐藏字段或视图布局,分享链接中看到的内容也会跟着变化。 - -## 二、 开启分享 - -1. 打开要分享的视图 -2. 点击视图工具栏中的 **分享** -3. 切换到 **分享视图** -4. 打开 **公开分享视图到网络** -5. 复制生成的分享链接,或使用二维码分享 - -如果你没有视图分享权限,分享开关会不可用。 - -关闭 **公开分享视图到网络** 后,已有分享链接将无法继续访问。 - -## 三、 链接管理 - -开启分享后,可以在分享面板中管理链接: - -- **复制链接**:复制当前分享链接。 -- **二维码**:生成当前分享链接的二维码。 -- **生成新链接**:重新生成分享链接。生成后请重新分发新链接,不要继续使用旧链接。 - - -公开链接可能被转发。开启前请确认当前视图中没有不应公开的字段或记录。 - - -## 四、 高级选项 - -不同视图类型会显示不同的高级选项。 - -| 选项 | 适用范围 | 说明 | -|------|------|------| -| **允许拷贝视图数据** | 网格视图 | 控制访问者是否可以从分享的网格视图中复制数据。关闭后,访问者不能复制分享视图中的数据。 | -| **显示展开记录中的所有字段** | 网格视图 | 控制访问者打开记录详情时,是否可以看到当前视图中隐藏的字段。 | -| **设置访问密码** | 所有视图分享 | 给分享链接加密码。访问者需要输入正确密码后才能打开分享页。密码至少需要 3 个字符。 | -| **需要登录提交** | 表单视图 | 要求访问者登录后才能提交表单。未登录访问者会被引导登录。 | - -## 五、 嵌入到其他页面 - -分享视图可以嵌入到其他网页。点击 **嵌入配置** 后,可以: - -- 预览嵌入效果 -- 复制 iframe 代码 -- 设置是否隐藏工具栏 -- 设置主题 - -示例: - -```html - -``` - -### 隐藏工具栏 - -**隐藏工具栏** 会在链接中加入 `hideToolBar=true`,用于隐藏分享页中的筛选、排序、搜索等工具栏。这个选项不适用于表单视图。 - -### 主题 - -主题通过链接参数控制: - -- **跟随系统** -- **浅色** -- **深色** diff --git a/zh/basic/view/toolbar/sort.mdx b/zh/basic/view/toolbar/sort.mdx deleted file mode 100644 index b0beb564..00000000 --- a/zh/basic/view/toolbar/sort.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "排序" -description: "您可以根据特定字段的值对记录进行重新排列。排序仅影响数据的显示顺序,不会修改数据本身。" ---- - -每个视图的排序、筛选和分组设置相互独立。在一个视图中的配置不会影响其他视图。 - -## 一、 添加排序 - -- 点击工具栏的 `排序`,设置排序条件 -- 设置排序规则 - -## 二、 功能特性 - -- **多级排序**:支持添加多个排序条件。会优先按第一个条件排序,当第一个条件相同时,再按第二个条件排序 -- **字段逻辑**:不同字段类型有不同的排序规则 - - **文本**:按字母顺序 (A-Z) 或反向 (Z-A) - - **数字/日期**:按升序 (1-9) 或降序 (9-1) - - **选项 (单选/多选)**:默认按选项在配置列表中的顺序排列 -- **手动拖拽**:在**未开启**自动排序的情况下,您可以直接拖拽记录行首,随意调整行的上下位置 - -在排序菜单中,您可以控制是否开启 `自动排序` 开关: -- **开启 (默认)**:严格遵循排序规则。当您修改了某条记录的数据(如改了日期),它会自动跳到新位置,保持队列整齐。此时**禁止手动拖拽**记录 -- **关闭**:仅在点击“重新应用”按钮时才进行一次性排序。修改数据后记录不会乱跳,且允许您**手动拖拽**微调记录位置 \ No newline at end of file