一、功能简介
多维表格工作流支持“循环”的逻辑。通过设定规则,它可以重复执行相同的操作,直到任务完成。
注:只有“数组”类型的数据才能使用循环。数组是由相同类型的元素(element)的集合所组成的数据结构。例如通过“查找记录”找到的所有符合条件的记录,或是满足条件的某列值(支持选择人员、群组、附件字段)。
常见使用场景:
- 待办清单定向推送:每周查找状态为“进行中”的任务,并给对应的任务负责人分别发送消息提醒,消息中只包含自己所负责的任务信息,实现数据隔离,让信息更聚焦。
- 面试记录数据隔离:针对所有当天已完成的面试,自动为每位面试官创建一条新记录用于记录面试结果,并发送消息邀请填写。面试官点击消息卡片中的按钮,可直接填写并记录在多维表格中,不会看到其他面试官的结果,也不会收到与自己无关的通知。
- 向多个群组批量添加群成员:若一个群组字段中添加了多个群组,使用循环功能可以便捷地将人员一次性添加到多个群组中。
二、操作流程
功能入口
- 打开多维表格,点击左下角的 工作流 创建一个工作流。
- 选择你需要的触发条件后,点击带有 就执行操作 字样的按钮,选择 循环 的执行操作。
- 注:一个工作流中最多可添加 5 个循环节点。
250px|700px|reset
循环节点设置
循环节点设置,指的是下图中,对 循环 这一节点的具体设置。
250px|700px|reset
“循环”节点本身支持如下设置:
- 循环方式:目前支持 依次处理每条数据(for each)的循环方式,即:对一组数据依次执行相同的操作。例如,给任务清单中的每项任务的负责人发送催办,或将任务清单中的每项任务都标记为完成。
- 注:“条件满足时,继续执行循环”(while)的循环方式尚未上线。
- 需要依次处理的数据:当循环方式选择了 依次处理每条数据 时,需设置此项。此处仅支持引用前序步骤中产生的数据,且只能引用“数组”类型的数据。具体可选的数组如下:
- HTTP 请求或 webhook 触发所输出的 json.array。
- 当触发条件为 添加新记录时、修改记录时、新增/修改的记录满足条件时、到达记录中的时间时,或是当执行操作为 新增记录 或 修改记录 时,可选择这些步骤中输出的人员、群组和附件字段。
- 注:同一个单元格中可存在多个人员、群组、附件。
- 查找记录 操作输出的 查找到的所有记录 和 查找到的所有记录的某列值。“查找到的某列值”同样仅支持人员、群组和附件字段。
- 最大循环次数:在此处输入你希望此节点循环的最大次数。当循环次数达到最大时,将不再执行后续循环。不同付费版本下,单节点的最大循环次数不同,详情可参考下表。
- (注:Lark 基础版仅支持特定的国家和地区。)
- 若循环出错时 的处理方式:在整个循环的执行过程中,若其中某一次出现了错误,你可以选择 仅跳过当次循环,继续执行后续循环 和 终止执行,流程失败 两种处理方式。
- 若你选择了 仅跳过当次循环,继续执行后续循环 的选项,流程运行时可能会出现“部分运行成功、部分运行失败”的情况。你可以在运行日志中查看具体的运行情况。
循环体设置
设置好循环节点后,你需要设置循环体,即要循环的具体执行动作。
循环体设置,就是指在下图中的循环圆圈内添加各种执行操作。
250px|700px|reset
添加循环操作
点击圆圈上的 + 图标,你可以选择一系列执行操作,也可以选择继续添加 循环 节点,实现循环逻辑的嵌套。循环体内不支持添加 条件判断 操作。在一个工作流中,最多可嵌套 3 层循环。
250px|700px|reset
使用循环数据
在循环节点之后的步骤可以引用循环节点输出的数据,主要分为 当前循环数据 和 当前循环轮数 两类。
当循环的数组是一个字段的值时,你可以直接选择 当前循环数据;当循环的数组是 查找到的所有记录 时,你需要点击 继续 选择具体的字段。
250px|700px|reset
注:循环输出的数据,只能在循环体内(即循环的 loop 内)使用。循环结束后的所有节点,无法引用循环数据。
三、应用案例
本文以“向指定人推送指定记录”的场景为例,对循环功能的实际使用进行简单的说明。
业务场景
在进行任务管理时,你可能需要向负责人推送自己的待办清单,消息中只包含自己所负责的任务信息,实现数据隔离。
在未使用循环功能时,易出现的错误配置为,向“任务负责人”这个人员字段中的每个人都发送了全部的任务清单,可能导致信息冗杂或数据泄漏。使用循环功能,你就可以配置出“定期、定向发送待办清单”的效果。
流程总览如下:
250px|700px|reset
操作步骤
前置准备:打开任务管理的多维表格,数据表中已记录了任务名称、优先级、任务负责人、状态等信息,你可根据业务需要进行自定义。接下来,创建一个工作流。
250px|700px|reset
- 选择 定时触发 的触发条件。设置时间为周一早上 10 点,并选择 每周重复。
- 添加一个 查找记录 的操作,查找所有进行中的任务。选择任务所在的数据表,并设置筛选条件为 状态 等于 进行中。按需设置查找内容,此处我们选择“任务负责人”字段。
250px|700px|reset
- 添加一个 循环 的操作,并进行循环节点设置。
- 选择 依次处理每条数据 的循环方式。
- 在 需要依次处理的数据 处,点击输入框,将鼠标悬停在 2.查找记录 上并点击 继续,再悬停在 查找到的所有记录的某列值 上并点击 继续,选择 任务负责人。
250px|700px|reset
250px|700px|reset
- 按需设置 最大循环次数 和循环出错时的处理方式。
- 完成上述设置后,意味着你将会对“第二步找到的所有记录”中的“任务负责人”字段执行完全一致的操作。
接下来,在循环体内,设置需循环执行的具体操作。先查找该人员负责的所有任务,再发送消息提醒。
250px|700px|reset
- 添加一个 查找记录 的操作,并添加两个筛选条件:状态 等于 进行中;任务负责人 包含 3.循环 > 当前循环数据。
- 按需设置你想要查找的字段内容,此处设置为“任务名称”“任务负责人”“状态”“最新进展记录”。
250px|700px|reset
250px|700px|reset
- 添加一个 发送 Lark 消息 的操作。在 接收方 处,选择之前步骤产生的数据,选择 3.循环 > 当前循环数据。
- 按需设置消息标题和内容。在消息内容中,你可以点击 ⊕ 引用值 引用循环数据,例如引用任务负责人姓名及对应的任务。
250px|700px|reset
250px|700px|reset
配置效果
以此案例为例,当前数据表中状态为 进行中 的任务有 4 条,负责人分别是 Alice 和 陈一一。
250px|700px|reset
在完成配置后,二人分别会收到自己所负责的任务提醒,不会看到其他任务。效果如下:
250px|700px|reset
250px|700px|reset
四、常见问题