ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Automatisch Notion 集成动作完全指南:数据库条目与页面的创建、查找与更新实战

Automatisch Notion 集成动作完全指南:数据库条目与页面的创建、查找与更新实战 Automatisch Notion 集成动作完全指南数据库条目与页面的创建、查找与更新实战【免费下载链接】automatischThe open source Zapier alternative. Build workflow automation without spending time and money.项目地址: https://gitcode.com/GitHub_Trending/au/automatisch本文以 Automatisch 开源仓库中 Notion 应用的四个核心动作Create database item、Create page、Find database item、Update database item为主线结合其底层源码实现系统讲解如何在 Automatisch 工作流中调用 Notion API 完成数据库条目的增查改、子页面的创建以及按属性检索数据帮助你快速搭建 Notion 与其它应用之间的自动化流程。Notion 是 Automatisch 内置支持的连接型应用之一应用定义位于 packages/backend/src/apps/notion/index.js其动作模块注册在 packages/backend/src/apps/notion/actions/index.js共导出四个动作。官方文档页 packages/docs/pages/apps/notion/actions.md 对它们做了如下概述动作名称动作 key功能描述Create database itemcreateDatabaseItem在数据库中创建一条条目itemCreate pagecreatePage在父页面内部创建一个子页面Find database itemfindDatabaseItem按属性在数据库中检索条目Update database itemupdateDatabaseItem更新数据库条目前置条件先建立 Notion 连接在流编辑器中使用上述动作之前必须先在 Automatisch 中完成 Notion 连接的授权。Notion 连接采用 OAuth 2.0 流程详细步骤见 packages/docs/pages/apps/notion/connection.md核心要点包括前往 Notion 的 My integrations 页面创建集成并填写名称在Capabilities能力页面勾选Read user information without email addresses在Distribution分发页面将集成设为公开并把 Automatisch 提供的OAuth Redirect URL填入Redirect URIs将集成公开后把OAuth client ID和OAuth client secret分别粘贴到 Automatisch 的 Client ID 与 Client Secret 字段并提交。连接建立后Notion 应用会通过beforeRequest钩子自动为每个 API 请求注入认证头与版本头见 packages/backend/src/apps/notion/index.js。其中addNotionVersionHeader会把请求头固定为Notion-Version: 2022-06-28见 add-notion-version-header.js所有动作均以此版本调用 Notion API无需手工处理版本协商。Create database item向数据库写入新条目动作定义位于 packages/backend/src/apps/notion/actions/create-database-item/index.js用于在指定数据库中创建一条新记录对应 Notion API 的POST /v1/pages。动作参数参数标签参数 key类型必填说明DatabasedatabaseIddropdown是目标数据库选项由动态数据源listDatabases拉取Namenamestring否条目的标题文本最多 2000 字符超出部分会被截断Contentcontentstring否添加到页面正文的文本同样受 2000 字符上限约束name与content均声明了variables: true说明它们可以在流编辑器中插入来自其它步骤的变量值例如触发步骤返回的动态数据。底层实现与请求体结构在run($)中源码会先对name与content做slice(0, 2000)截断再构造请求体const body { parent: { database_id: $.step.parameters.databaseId }, properties: {}, children: [], };当提供了name时将其写入properties.Name.titleNotion 数据库条目的标题属性当提供了content时将其包装为一个paragraph类型的 block追加到children数组成为新页面的正文段落两个字段均为可选只填名称可创建空条目只填正文则创建仅含段落内容、无标题的条目。请求发送到POST /v1/pages后响应数据会通过$.setActionItem({ raw: data })保存为动作输出供下游步骤引用。Create page在父页面下创建子页面动作定义位于 packages/backend/src/apps/notion/actions/create-page/index.js用于在某个已存在的父页面内部创建一个新的子页面同样调用POST /v1/pages。动作参数参数标签参数 key类型必填说明Parent pageparentPageIddropdown是父页面选项由动态数据源listParentPages拉取Titletitlestring否子页面标题最多 2000 字符Contentcontentstring否子页面正文最多 2000 字符与 Create database item 的实现差异两者请求体结构类似但父对象类型不同const body { parent: { page_id: parentPageId }, // 此处为 page_id 而非 database_id properties: {}, children: [], };标题写入body.properties.title注意属性 key 是title而非Name类型固定为title正文同样被包装成paragraphblock 放入childrentitle与content同样可选若都为空则创建一个空白子页面。Find database item按属性检索数据库条目动作定义位于 packages/backend/src/apps/notion/actions/find-database-item/index.js用于在指定数据库中按属性值精确查找条目对应 Notion API 的POST /v1/databases/{database_id}/query。动作参数参数标签参数 key类型必填说明DatabasedatabaseIddropdown是目标数据库Namenamestring否用于匹配Name属性的文本查询条件与排序逻辑源码固定按Name属性做rich_text类型的精确匹配equals并对结果按last_edited_time降序排序const body { filter: { property: Name, rich_text: { equals: truncatedName }, }, sorts: [ { timestamp: last_edited_time, direction: descending }, ], };查询结果取data.results[0]排序后最近编辑的条目作为动作输出。这意味着该动作适合按标题查找最新的一条记录常用于先查后改的流程组合用 Find 拿到条目 ID再交给 Update database item 更新。Update database item灵活更新数据库条目动作定义位于 packages/backend/src/apps/notion/actions/update-database-item/index.js是四个动作中功能最复杂的一个支持按数据库真实 schema 动态渲染属性字段并联动更新条目正文。动作参数参数标签参数 key类型必填说明DatabasedatabaseIddropdown是目标数据库选择后通过getDynamicFields动态加载该库的属性字段ItemitemIddropdown是待更新的条目dependsOn: [parameters.databaseId]选项由listDatabaseItems按所选数据库拉取Contentcontentstring否可选的正文文本最多 2000 字符动态属性字段按数据库 schema 渲染选择数据库后getDynamicFields会调用 list-database-properties 读取该数据库的properties定义并为每个可写属性动态生成property_属性名形式的参数字段自动跳过只读/计算型属性created_time、last_edited_time、created_by、last_edited_by、formula、rolluptitle、rich_text、email、phone_number、url、number、date渲染为 string 输入框date提示格式为YYYY-MM-DD或YYYY-MM-DDTHH:MM:SScheckbox、select渲染为下拉框选项直接取自数据库属性配置multi_select、people、files、relation渲染为动态复合字段如files包含 File URL 与 File Name 两个子输入其余不支持的类型会被忽略。属性类型的映射逻辑在run($)中源码遍历$.step.parameters中所有以property_开头的参数先通过GET /v1/databases/{id}获取数据库 schema 判断每个属性的真实类型再按类型构造 Notion API 的属性值数据库属性类型构造方式title{ title: [{ text: { content } }] }截断至 2000 字符rich_text{ rich_text: [{ text: { content } }] }numberparseFloat解析非数字则跳过checkbox字符串true/布尔true视为勾选select{ select: { name } }multi_select取每个{ option }项的option作为名称date{ date: { start } }people取{ userId }映射为{ object: user, id }files取{ url, name }映射为 external 文件relation取{ pageId }映射为关联页 IDemail{ email }phone_number{ phone_number }url{ url }正文更新策略若提供了content源码会读取条目现有子块列表GET /v1/blocks/{itemId}/children并根据首个块的类型采取不同策略首个块是paragraphPATCH /v1/blocks/{firstBlockId}原地更新该段落文本首个块是heading_1/heading_2/heading_3以相同标题类型原地更新其它类型或无子块PATCH /v1/blocks/{itemId}/children追加一个新的paragraphblock。最后统一执行PATCH /v1/pages/{itemId}提交所有属性更新并以响应数据作为动作输出。这种先读 schema、再按类型映射、最后合并提交的实现让一个动作即可覆盖数据库里绝大多数属性类型的更新场景。动作背后的动态数据源四个动作中的下拉参数都依赖 Notion 应用提供的动态数据源packages/backend/src/apps/notion/dynamic-data/index.js它们通过 Notion 搜索 APIPOST /v1/search实时拉取可选值listDatabases按object: database过滤搜索所有数据库分页遍历next_cursor标题为空时显示Untitled DatabaselistParentPages搜索所有页面并过滤出parent.workspace的工作区顶级页面标题为空时显示Untitled PagelistDatabaseItems按所选数据库拉取其条目供 Update 动作的 Item 下拉框使用listTags拉取可选标签供触发器或动作使用。由于这些数据源在用户操作界面时即时查询下拉选项始终与 Notion 工作区的实际内容保持一致。典型流程编排示例基于上述四个动作可以在 Automatisch 中组合出常见的自动化场景Webhook → Create database item外部表单或 Webhook 收到数据后在 Notion 数据库自动创建条目触发器如新数据库条目→ Update database item监听数据库变化后回写处理结果例如审核状态、备注字段Find database item → Update database item先按标题定位记录再更新其属性与正文实现查重更新而非重复创建Create page在指定父页面下按模板自动生成子页面适合构建文档归档类流程。Notion 应用的触发器new-database-items、updated-database-items位于 packages/backend/src/apps/notion/triggers与上述动作配合即可形成完整的监听—处理—回写闭环。所有请求都自动携带认证头与Notion-Version: 2022-06-28版本头无需在步骤内手工配置鉴权。小结Automatisch 的 Notion 动作以数据库条目和页面两类对象为核心Create database item / Create page 负责新建Find database item 负责按Name属性精确检索最新记录Update database item 则通过动态属性字段覆盖 Notion 数据库的绝大多数属性类型并联动更新正文。从 actions.md 的文档概述到 actions 目录下的源码实现四者形成了完整可落地的实操闭环可直接用于构建 Notion 相关的自动化工作流。【免费下载链接】automatischThe open source Zapier alternative. Build workflow automation without spending time and money.项目地址: https://gitcode.com/GitHub_Trending/au/automatisch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表