如何限制脚本对每个客户执行一次?脚本编辑器和 Shopify

How Do I Limit A Script To Execute Once Per Customer? Script Editor and Shopify

我想要的:

我的问题:

业务用例:

感谢您的时间和想法!

P.S。脚本在 Ruby 中。此外,设置折扣代码不适用于我的用例。

更新

感谢您的回复。我将在本周尝试这些建议的更新,很快就会 post 我的结果。

更新 2

所以除了一个细节之外,下面的建议和标记的答案都是正确的。即使下面描述的语法正确,脚本编辑器仍会 运行 出现某种类型的错误。另一个 建议使用 '&'。

所以我最终做了这样的事情:

customer = Input.cart.customer
if customer&.tags&.include?("gift_received")
...
end

这对我有用。再次感谢您的所有回答!

嗯。您总是可以为客户分配一个小标签。例如,如果他们收到了这个免费商品,请在他们的第一笔订单中给他们贴上标签。现在,如果他们再尝试欺骗您九次,请检查该标签。如果他们有,请从结帐处删除该项目。繁荣。问题已解决。

任何类型的解决方案只有在需要帐户时才有效 否则您无法追踪订单历史。

有两种可能的解决方案

  1. 您创建一个流程,在客户收到礼物时为其分配标签。您检查标签:Input.cart.customer.tags.include?('gift_received') 并且不应用折扣。
  2. 如果您的情况只是 'Gift on the first order',您只需检查 Input.cart.customer.orders_count > 0 即可。

I have created a script in the Script Editor that makes your first line item in a cart free. I want this script to execute once per customer.

最好的方法是使用标签标记客户。您可以使用 Shopify 流程向包含免费礼品的订单添加标签,以将客户标记为已收到免费礼品的客户。这比检查 Input.cart.customer.orders_count > 0 更好,因为它会让您在订单和客户面板中获得更多可见性。

@Fabio Filippi 提到的方法是最好的,但需要加以保护:

You create a flow that assigns a tag to a customer when they receive a gift. You check for the tag : Input.cart.customer.tags.include?('gift_received') and don't apply the discount.

Business use case:

Without adding this functionality to my script, a customer could checkout with 1 item free... but then they could begin shopping again and checkout with a new cart with the first line item free again... that means they could get 10 free items from 10 different checkouts. Nothing prevents the user from creating a new account so you need to consider some verification logic that will be assigning the gift_received tag after the customer is validated.

如果您想避免欺诈,我会考虑同时使用(请注意,在这种情况下,我们正在检查客户过去是否已经购买过东西)Input.cart.customer.orders_count > 1Input.cart.customer.tags.include?('gift_received')Input.cart.customer.tags.include?('gift_received')Input.cart.customer.total_spent > Money.new(cents: 1000)。这样你就可以拥有“有资格获得礼物”的逻辑。有很多方法可以解决它。