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