运行代码

运行代码操作可执行 JavaScript。您可以将工作流中之前步骤的数据作为输入传递到运行代码操作,并将返回值用于后续步骤。

字段

运行代码操作包含以下字段。

“运行代码”操作中使用的字段。
字段 描述
输入 必填。GraphQL 查询,可使用之前步骤的数据作为运行代码操作的输入。
输出 必填。操作返回的数据的表示形式,以 GraphQL 模式定义语言 (SDL) 进行定义。
代码 必填。运行代码操作将执行的 JavaScript。

输入数据

输入数据可传递自运行代码操作之前的步骤。若要包含此数据,您可以在输入字段中编写 GraphQL 查询。从查询返回的数据将可用作被标记为 export default 的函数的 input 参数。您无需在查询中处理分页或使用 edgesnodes,因为 Flow 会处理这些操作。

获取订单备注和订单项目标题的示例输入:

{
  order {
    note
    lineItems {
      title
    }
  }
}

此数据将被转换为可在代码中使用的 input 变量:

export default function main(input) {
  // input.order.note
  // input.order.lineItems[0].title
}

还可在函数签名中析构输入:

export default function main({order}) {
  // order.note
  // order.lineItems[0].title
}

输出数据

运行代码操作可以返回自定义数据。若要定义代码将返回的数据类型,请使用输出字段和 GraphQL 的模式定义语言 (SDL)。例如,若要返回名为 giftMessage 的字符串和名为 totalGifts 数值,请使用:

type Output {
  "The message to include in the gift"
  giftMessage: String!
  "The total number of gifts"
  totalGifts: Int!
}

这些注释是选填的,但将用于描述 Flow UI 中的数据。若要在 JavaScript 代码中输出此数据,请返回与该类型匹配的对象:

export default function main(input) {
  // your code
  return {
    giftMessage: 'Hello',
    totalGifts: 1,
  };
}

您还可以定义自定义类型以返回更复杂的数据。例如,要返回名为 Gift 的类型,并且该类型包含名为 message 的字符串和名为 amount 的数值,请使用:

type Output {
  "The gift to send"
  gifts: [Gift!]!
}

type Gift {
  "The message to include in the gift"
  message: String!
  "The total number of gifts"
  amount: Int!
}

若要在此操作后的步骤中访问此数据,请使用名为 Run code 的变量,系统将根据在运行代码操作配置中定义的 Output 架构来设置其类型。您可在条件和操作中使用此变量。

示例

可在 Flow 示例储存库中找到运行代码操作的示例。

限制

运行代码操作具有以下限制:

  • 您的代码无法导入模块。
  • 您的代码无法进行 http 调用 (fetch)。
  • 您的代码无法使用 console.log
  • 不能使用随机和基于时钟的函数。日期数据(例如 scheduledAtcreatedAt )可以作为输入传入。

此外,还存在以下强制限制:

  • 输入数据查询限制为 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 社区文章发表评论。

准备好开始使用 Shopify 进行销售了吗?

免费试用