运行代码
运行代码操作可执行 JavaScript。您可以将工作流中之前步骤的数据作为输入传递到运行代码操作,并将返回值用于后续步骤。
字段
运行代码操作包含以下字段。
字段 | 描述 |
---|---|
输入 | 必填。GraphQL 查询,可使用之前步骤的数据作为运行代码操作的输入。 |
输出 | 必填。操作返回的数据的表示形式,以 GraphQL 模式定义语言 (SDL) 进行定义。 |
代码 | 必填。运行代码操作将执行的 JavaScript。 |
输入数据
输入数据可传递自运行代码操作之前的步骤。若要包含此数据,您可以在输入字段中编写 GraphQL 查询。从查询返回的数据将可用作被标记为 export default
的函数的 input
参数。您无需在查询中处理分页或使用 edges
和 nodes
,因为 Flow 会处理这些操作。
获取订单备注和订单项目标题的示例输入:
此数据将被转换为可在代码中使用的 input
变量:
还可在函数签名中析构输入:
输出数据
运行代码操作可以返回自定义数据。若要定义代码将返回的数据类型,请使用输出字段和 GraphQL 的模式定义语言 (SDL)。例如,若要返回名为 giftMessage
的字符串和名为 totalGifts
数值,请使用:
这些注释是选填的,但将用于描述 Flow UI 中的数据。若要在 JavaScript 代码中输出此数据,请返回与该类型匹配的对象:
您还可以定义自定义类型以返回更复杂的数据。例如,要返回名为 Gift
的类型,并且该类型包含名为 message
的字符串和名为 amount
的数值,请使用:
若要在此操作后的步骤中访问此数据,请使用名为 Run code 的变量,系统将根据在运行代码操作配置中定义的 Output
架构来设置其类型。您可在条件和操作中使用此变量。
示例
可在 Flow 示例储存库中找到运行代码操作的示例。
限制
运行代码操作具有以下限制:
- 您的代码无法导入模块。
- 您的代码无法进行 http 调用 (
fetch
)。 - 您的代码无法使用
console.log
。 - 不能使用随机和基于时钟的函数。日期数据(例如
scheduledAt
或createdAt
)可以作为输入传入。
此外,还存在以下强制限制:
- 输入数据查询限制为 5000 个字符。
- 输出数据架构限制为 5000 个字符。
- 输出数据有效负载限制为 50 KB。
- 代码不能超过 50000 个字符。
- 总执行时长限制为 5 秒。
- 内存用量限制为 10 MB。
路线图
Flow 团队计划逐步为运行代码操作添加功能。下表概述了计划的改进以及预计交付日期。
改进 | 描述 | 预计送达时间 |
---|---|---|
Bug 修复 | Bug 修复和清除 | 2024 年 2 月 |
日志记录 | 使用 `console.log` 将数据输出到“运行”日志以进行故障排除。 | 2024 年 4 月初 |
外部 API 调用 | 使用 JavaScript 的 fetch 来调用 API。 | 2024 年第 3 季度 |
反馈
“运行代码”操作是 Shopify Flow 中的一种新步骤。如果您有反馈和疑问,请对此 Flow 社区文章发表评论。