Liquid、JavaScriptなどに関する質問
いつもお世話になっております。
同じ商品を2回購入してくれた顧客にメールを送りたいです。
Shopify FlowとKlaviyoを使って送る方法を考えています。
1回目の購入時→顧客タグに「商品ハンドル」のタグを追加
2回目の購入時→顧客タグの中に今回購入した商品ハンドルのタグがあるかを判定し、あったらKlaviyoのTrack an Eventを実行
という方法を考えていたのですが、「顧客タグの中に今回購入した商品ハンドルのタグがあるかを判定」部分がうまくいきません。
どのように設定すれば、良いでしょうか?
それとも全く別の方法がありますでしょうか?
よろしくお願いいたします。
解決済! ベストソリューションを見る。
成功
@るん 様
Run Codeを利用されるのが良いかと思います。
Flowの全体図です。最後のLog outputをKlaviyoのアクションにご変更ください。
Run Codeの内容です。
input
{
order {
lineItems {
product {
handle
}
}
customer {
tags
}
}
}
code
export default function main(input) {
let isSecondPurchase = false;
const handles = input.order.lineItems.map(lineItem => lineItem.product.handle);
handles.forEach(handle => {
if(!isSecondPurchase) isSecondPurchase = input.order.customer.tags.includes(handle);
})
return {
isSecondPurchase: isSecondPurchase
}
}
output
type Output {
isSecondPurchase: Boolean!
}
十分に検証はしていませんので、
うまく動作しない場合は、Run Codeのcode を見直していただくと良いかと思います。
ご参考まで。
(キュー田辺)
成功
@るん 様
codeの解説、でよかったでしょうか?
codeにコメントを入れてみました。
export default function main(input) {
// 同じ商品を2回購入しているかのフラグ
let isSecondPurchase = false;
// 注文のlineItemsからproduct.handleを取り出して、配列に変換。["handle1","handle2","handle3"]のような配列が出来上がる
const handles = input.order.lineItems.map(lineItem => lineItem.product.handle);
// handelsの要素1つずつ(注文があった商品のハンドル)が顧客タグに含まれるかを調査
handles.forEach(handle => {
// まだ、同じ商品を2回購入していることが確認できていない場合
if(!isSecondPurchase) {
// 顧客タグに、商品ハンドルが含まれていれば、同じ商品を2回購入しているかのフラグをtrueに、そうでなければ、falseにする
isSecondPurchase = input.order.customer.tags.includes(handle);
}
})
// outputに渡す値
return {
isSecondPurchase: isSecondPurchase
}
}
ご参考まで。
(キュー田辺)
成功
@るん 様
Run Codeを利用されるのが良いかと思います。
Flowの全体図です。最後のLog outputをKlaviyoのアクションにご変更ください。
Run Codeの内容です。
input
{
order {
lineItems {
product {
handle
}
}
customer {
tags
}
}
}
code
export default function main(input) {
let isSecondPurchase = false;
const handles = input.order.lineItems.map(lineItem => lineItem.product.handle);
handles.forEach(handle => {
if(!isSecondPurchase) isSecondPurchase = input.order.customer.tags.includes(handle);
})
return {
isSecondPurchase: isSecondPurchase
}
}
output
type Output {
isSecondPurchase: Boolean!
}
十分に検証はしていませんので、
うまく動作しない場合は、Run Codeのcode を見直していただくと良いかと思います。
ご参考まで。
(キュー田辺)
株式会社Q (キュー)田辺様
いつもお世話になっております。
今回も丁寧にご回答いただき、ありがとうございます。
こんな方法があるのですね。
Run Codeは使用したことがなく、よく理解していないのですが、勉強してみようと思います。
もしよろしければ、簡単に解説をお願いしても良いでしょうか?
よろしくお願いいたします。
成功
@るん 様
codeの解説、でよかったでしょうか?
codeにコメントを入れてみました。
export default function main(input) {
// 同じ商品を2回購入しているかのフラグ
let isSecondPurchase = false;
// 注文のlineItemsからproduct.handleを取り出して、配列に変換。["handle1","handle2","handle3"]のような配列が出来上がる
const handles = input.order.lineItems.map(lineItem => lineItem.product.handle);
// handelsの要素1つずつ(注文があった商品のハンドル)が顧客タグに含まれるかを調査
handles.forEach(handle => {
// まだ、同じ商品を2回購入していることが確認できていない場合
if(!isSecondPurchase) {
// 顧客タグに、商品ハンドルが含まれていれば、同じ商品を2回購入しているかのフラグをtrueに、そうでなければ、falseにする
isSecondPurchase = input.order.customer.tags.includes(handle);
}
})
// outputに渡す値
return {
isSecondPurchase: isSecondPurchase
}
}
ご参考まで。
(キュー田辺)
株式会社Q (キュー)田辺様
いつもお世話になっております。
丁寧に教えていただき、ありがとうございました。
理解することができました。
Run Code使いこなせるようになればできることが増えそうなので、色々試してみます。
教えていただき、ありがとうございました。
Shopify アカデミーの学習パスと認定スキルバッジExpanding Your Shopify Business Internationallyを活用して、国際的にビジネ...
By Shopify Feb 7, 2025Shopify アカデミーの学習パスB2B on Shopify:立ち上げとカスタマイズで卸売販売に進出しましょう。これら3つの無料コースは、ShopifyストアでB2B機能...
By Shopify Jan 31, 2025サポートの選択肢が増えていく中、最適となる選択の判断が難しくなっているかと存じます。今回は問題の解決に最適となるサポートの選択方法を、紹介させて頂きます。 選択肢のご紹介...
By Mirai Oct 6, 2024