ShopifyFlowのタグ削除で、「一致するタグ」ではなく「〜から始まるタグ」を削除したい

お世話になります。

ShopifyFlowアプリを使用し、顧客のもつタグの削除を行おうとしてます。

【前提】

購入があった日に、購入日をタグでつけています。

例)購入日2024/01/01(下記の内容でタグ付与)

購入日{{ 'now' | date: '%s' | plus: 32400 | date: '%Y/%m/%d' }}

【質問】

顧客のタグ削除自体は「Remove customer tags」から問題なくできますが「完全一致」ではなく「〜から始まる」タグを消したい場合、方法はあるでしょうか。

上記の例であげたような、「特定単語」+「タグ取得日により変動する日付」というような場合に使いたいです。

同じタグを削除すれば出来るのだろうかと思い、付与時に使用したタグそのままの内容で削除しようとしましたが、これでは削除できませんでした。

完全一致しているタグの削除はできますが、「特定の単語から始まる」場合の方法がありましたら、ご教授いただきたいです。

よろしくお願いいたします。

@tamari

“購入日” から始まるタグを削除したい、ということでしょうか?

であれば、下記のようにRun Codeと、Admin API Requestを利用してはどうでしょうか?

Run Codeは下記のようにします。

入力

query{
  order{
    customer {
      tags
    }
  }
}

コード: "購入日"から始まるタグ「以外」を抽出します。

export default function main(input) {
  const word = "購入日";
  const filterTags = input.order.customer.tags.filter(tag => !tag.startsWith(word));
  
  return {
    tags: filterTags
  }
}

出力

type Output {
  tags: [String!]!
}

Send Admin API requestは下記です。

まず、customerUpdateを選びます。

ミューテーションには下記を設定します。

{
  "input": {
    "id": "{{order.customer.id}}",
    "tags": {{runCode.tags | json}}
  }
}

ご参考まで。

(キュー田辺)

1 Like

田辺様

ご返信ありがとうございます。早速試してみます。

田辺様

お教えいただいたコードで無事実行できました。

結果的に、注文時ではなく他のアプリの動作時に実行するようになりましたので、「order」部分を削って実行しましたが問題なく動いています。

ありがとうございました

田辺様

すでに解決済みとさせていただいておりましたが、お教えいただきたい点がございます。

Send Admin API request、customerUpdateのミューテーション入力内容についてです。

1つのワークフロー内でRunCodeを複数作成した場合、「Run Code(1)」「Run Code(2)」というように数が増えていきますが、

次に実行するcustomerUpdateで「runCode.tags」とする箇所も「runCode1.〜」「runCode2.〜」…というように

「runCode」の後ろに数字を足していくという認識で良いのでしょうか。

runCode1、runCode2、とつけて実行できることは確認しましたが、このやり方が正しいのかどうかをお聞きしたいです。

初歩的な質問かとは存じますが、よろしければご回答いただけますと幸いです。

@tamari

1つのワークフロー内でRunCodeを複数作成した場合、「Run Code(1)」「Run Code(2)」というように数が増えていきますが、

次に実行するcustomerUpdateで「runCode.tags」とする箇所も「runCode1.〜」「runCode2.〜」…というように

「runCode」の後ろに数字を足していくという認識で良いのでしょうか。

はい、合っているかと思います。

確認したところ、

Run Codeの出力は、runCode

Run Code (1)の出力は、runCode1

Run Code (2)の出力は、runCode2

となっていました。

ご参考まで。

(キュー田辺)

田辺様

早速のご回答、ご確認をいただきましてありがとうございます。

認識があっていたようでよかったです。感謝いたします。

お手数をおかけいたしました。

1 Like