Liquid、JavaScriptなどに関する質問
テーマは「Dawn」を使用しています。
ShopifyのプランはBasicです。
配送は「ヤマト運輸」を利用しており、伝票発行はヤマトのB2システムを使っています。
(ShopifyからCSVを取得→ヤマトB2にCSVを読み込ませて伝票発行→発送しています)
ただ、ヤマトには以下の通り住所に文字数制限があります。
(文字数がオーバーしたままCSVを取り込むとエラーになり発送作業に支障が出ています)
都道府県(4文字以内)+市区郡町村(12文字以内)+町・番地(16文字以内)
本当は、カート内で文字数制限を設けたかったのですが、以下の記事ではプラン的に厳しそうでした。
そこで、せめて事前に文字数オーバーをスタッフ側で検知して、発送前に配送住所を修正できればと思っています。
具体的には、ShopifyFlowを使って、注文時の配送先住所の文字数をチェック→文字数オーバーした時にスタッフに通知(メール)を送るといったことは可能でしょうか。
可能な場合、具体的なShopifyFlowの設定内容も教えていただけると助かります。
※その他、もっと良い方法やアプリがあればご教示いただきたいです。
丸投げな質問で申し訳ないのですが、どなたか教えていただけますでしょうか。
よろしくお願いいたします。
解決済! ベストソリューションを見る。
成功
Shopify Flowでは下記のようになるかと思います。
Run codeを使った方がスマートなフローになりそうですが、まだ早期アクセスの機能であるため、昔ながらのアプローチで組んでみました。
https://help.shopify.com/ja/manual/shopify-flow/reference/actions/run-code
1. 注文情報にメタフィールド「custom.is_more_than_17_cahrs」を真偽値で、準備します。
2. Create Orderdをトリガーにします。
3. Update order metafieldsで「custom.is_more_than_17_cahrs」を更新します。
Valueには下記を設定します。
{%- assign prefecture = order.shippingAddress.province | replace: 'Aichi', '愛知県' | replace: 'Akita', '秋田 県' | replace: 'Aomori', '青森県' | replace: 'Chiba', '千葉県' | replace: 'Ehime', '愛 媛県' | replace: 'Fukui', '福井県' | replace: 'Fukuoka', '福岡県' | replace: 'Fukushima', '福島県' | replace: 'Gifu', '岐阜県' | replace: 'Gunma', '群馬県' | replace: 'Hiroshima', '広島県' | replace: 'Hokkaidō', '北海道' | replace: 'Hyōgo', '兵庫県' | replace: 'Ibaraki', '茨城県' | replace: 'Ishikawa', '石川県' | replace: 'Iwate', '岩手県' | replace: 'Kagawa', '香川県' | replace: 'Yamanashi', '山梨県' | replace: 'Yamaguchi', '山口県' | replace: 'Kōchi', '高知県' | replace: 'Kumamoto', '熊本県' | replace: 'Kyōto', '京都府' | replace: 'Mie', '三重県' | replace: 'Yamagata', '山形県' | replace: 'Miyazaki', '宮崎県' | replace: 'Nagano', '長野県' | replace: 'Nagasaki', '長崎県' | replace: 'Nara', '奈良県' | replace: 'Niigata', '新潟県' | replace: 'Ōita', '大分県' | replace: 'Okayama', '岡山県' | replace: 'Okinawa', '沖縄県' | replace: 'Ōsaka', '大阪府' | replace: 'Saga', '佐賀 県' | replace: 'Saitama', '埼玉県' | replace: 'Shiga', '滋賀県' | replace: 'Shimane', '島根県' | replace: 'Shizuoka', '静岡県' | replace: 'Tochigi', '栃木県' | replace: 'Tokushima', '徳島県' | replace: 'Tottori', '鳥取県' | replace: 'Toyama', '富山県' | replace: 'Tōkyō', '東京都' | replace: 'Miyagi', '宮城県' | replace: 'Wakayama', '和 歌山県' | replace: 'Kanagawa', '神奈川県' | replace: 'Kagoshima', '鹿児島県' -%}
{%- assign prefecture_num = prefecture | size -%}
{%- assign city_num = order.shippingAddress.city | size -%}
{%- assign address1_num = order.shippingAddress.address1 | size -%}
{%- assign count = 0 | plus: prefecture_num | plus: city_num | plus: address1_num -%}
{%- if count > 16 -%}
true
{%- else -%}
false
{%- endif -%}
これで、都道府県、市区町村、住所の文字数の合計が17文字以上の時に、custom.is_more_than_17_cahrsがTrueに、そうでなければFalseに設定されます。
4. メタフィールドの更新に時間がかかることがあるため、Waitで1分待機します。
5. custom.is_more_than_17_cahrsがTrueかどうか判定します。
このような設定になります。
6. custom.is_more_than_17_cahrsがTrueであれば、Send internal emailでメールを送信します。
以上となります。
もっと簡単に設定できるアプリもあるかもしれませんが、
取り急ぎ、Shopify Flowでの実装方法をご紹介いたしました。
※十分に検証していないので、なにか不具合があるかもしれません。
ご参考まで。
(キュー田辺)
成功
Shopify Flowでは下記のようになるかと思います。
Run codeを使った方がスマートなフローになりそうですが、まだ早期アクセスの機能であるため、昔ながらのアプローチで組んでみました。
https://help.shopify.com/ja/manual/shopify-flow/reference/actions/run-code
1. 注文情報にメタフィールド「custom.is_more_than_17_cahrs」を真偽値で、準備します。
2. Create Orderdをトリガーにします。
3. Update order metafieldsで「custom.is_more_than_17_cahrs」を更新します。
Valueには下記を設定します。
{%- assign prefecture = order.shippingAddress.province | replace: 'Aichi', '愛知県' | replace: 'Akita', '秋田 県' | replace: 'Aomori', '青森県' | replace: 'Chiba', '千葉県' | replace: 'Ehime', '愛 媛県' | replace: 'Fukui', '福井県' | replace: 'Fukuoka', '福岡県' | replace: 'Fukushima', '福島県' | replace: 'Gifu', '岐阜県' | replace: 'Gunma', '群馬県' | replace: 'Hiroshima', '広島県' | replace: 'Hokkaidō', '北海道' | replace: 'Hyōgo', '兵庫県' | replace: 'Ibaraki', '茨城県' | replace: 'Ishikawa', '石川県' | replace: 'Iwate', '岩手県' | replace: 'Kagawa', '香川県' | replace: 'Yamanashi', '山梨県' | replace: 'Yamaguchi', '山口県' | replace: 'Kōchi', '高知県' | replace: 'Kumamoto', '熊本県' | replace: 'Kyōto', '京都府' | replace: 'Mie', '三重県' | replace: 'Yamagata', '山形県' | replace: 'Miyazaki', '宮崎県' | replace: 'Nagano', '長野県' | replace: 'Nagasaki', '長崎県' | replace: 'Nara', '奈良県' | replace: 'Niigata', '新潟県' | replace: 'Ōita', '大分県' | replace: 'Okayama', '岡山県' | replace: 'Okinawa', '沖縄県' | replace: 'Ōsaka', '大阪府' | replace: 'Saga', '佐賀 県' | replace: 'Saitama', '埼玉県' | replace: 'Shiga', '滋賀県' | replace: 'Shimane', '島根県' | replace: 'Shizuoka', '静岡県' | replace: 'Tochigi', '栃木県' | replace: 'Tokushima', '徳島県' | replace: 'Tottori', '鳥取県' | replace: 'Toyama', '富山県' | replace: 'Tōkyō', '東京都' | replace: 'Miyagi', '宮城県' | replace: 'Wakayama', '和 歌山県' | replace: 'Kanagawa', '神奈川県' | replace: 'Kagoshima', '鹿児島県' -%}
{%- assign prefecture_num = prefecture | size -%}
{%- assign city_num = order.shippingAddress.city | size -%}
{%- assign address1_num = order.shippingAddress.address1 | size -%}
{%- assign count = 0 | plus: prefecture_num | plus: city_num | plus: address1_num -%}
{%- if count > 16 -%}
true
{%- else -%}
false
{%- endif -%}
これで、都道府県、市区町村、住所の文字数の合計が17文字以上の時に、custom.is_more_than_17_cahrsがTrueに、そうでなければFalseに設定されます。
4. メタフィールドの更新に時間がかかることがあるため、Waitで1分待機します。
5. custom.is_more_than_17_cahrsがTrueかどうか判定します。
このような設定になります。
6. custom.is_more_than_17_cahrsがTrueであれば、Send internal emailでメールを送信します。
以上となります。
もっと簡単に設定できるアプリもあるかもしれませんが、
取り急ぎ、Shopify Flowでの実装方法をご紹介いたしました。
※十分に検証していないので、なにか不具合があるかもしれません。
ご参考まで。
(キュー田辺)
お返事が遅くなりまして申し訳ございません。
迅速なお返事ありがとうございました。
試しているのですが、文字数制限内でもエラー通知メールが届いてしまいます…。
一旦合計数ではなく、都道府県などの項目別で設定して検証してみたいと思います!
ちなみに、通知メール(Send internal email)で、都道府県、市区町村、住所のそれぞれの文字数を本文に反映することは可能でしょうか?
※以下の「(●文字)」の部分に文字数を反映させたいです。
----------------------------------
<メールイメージ>
配送先住所が長すぎる注文があります。
至急ご確認ください。
■注文番号:*****
■支払方法:shopify_payments
■氏名(16文字以内):〇〇 〇〇(●文字)
■会社名(25文字以内):〇〇会社(●文字)
■都道府県(4文字以内):〇〇県(●文字)
■市区郡町村(12文字以内):〇〇市(●文字)
■町・番地(16文字以内):*******(●文字)
■建物名等(16文字以内):*******(●文字)
※都道府県+市区郡町村+町・番地+アパートマンション名合計32文字まで
■タグ:*****
■備考:*****
※こちらのメールはShopifyに連携しているアプリ「Shopify Flow」を使って送信されています。
----------------------------------
配送先住所が長すぎる注文があります。<br>
至急ご確認ください。<br>
<br>
----------------------------------
■注文番号:{{order.name}}<br>
■支払方法:{% for paymentGatewayNames_item in order.paymentGatewayNames %}{{paymentGatewayNames_item}}{% endfor %}<br>
<br>
■氏名(16文字以内):{{order.shippingAddress.lastName}} {{order.shippingAddress.firstName}}<br>
■会社名(25文字以内):{{order.shippingAddress.company}}<br>
<br>
■都道府県(4文字以内):{{order.shippingAddress.province | replace: 'Aichi', '愛知県' | replace: 'Akita', '秋田 県' | replace: 'Aomori', '青森県' | replace: 'Chiba', '千葉県' | replace: 'Ehime', '愛 媛県' | replace: 'Fukui', '福井県' | replace: 'Fukuoka', '福岡県' | replace: 'Fukushima', '福島県' | replace: 'Gifu', '岐阜県' | replace: 'Gunma', '群馬県' | replace: 'Hiroshima', '広島県' | replace: 'Hokkaidō', '北海道' | replace: 'Hyōgo', '兵庫県' | replace: 'Ibaraki', '茨城県' | replace: 'Ishikawa', '石川県' | replace: 'Iwate', '岩手県' | replace: 'Kagawa', '香川県' | replace: 'Yamanashi', '山梨県' | replace: 'Yamaguchi', '山口県' | replace: 'Kōchi', '高知県' | replace: 'Kumamoto', '熊本県' | replace: 'Kyōto', '京都府' | replace: 'Mie', '三重県' | replace: 'Yamagata', '山形県' | replace: 'Miyazaki', '宮崎県' | replace: 'Nagano', '長野県' | replace: 'Nagasaki', '長崎県' | replace: 'Nara', '奈良県' | replace: 'Niigata', '新潟県' | replace: 'Ōita', '大分県' | replace: 'Okayama', '岡山県' | replace: 'Okinawa', '沖縄県' | replace: 'Ōsaka', '大阪府' | replace: 'Saga', '佐賀 県' | replace: 'Saitama', '埼玉県' | replace: 'Shiga', '滋賀県' | replace: 'Shimane', '島根県' | replace: 'Shizuoka', '静岡県' | replace: 'Tochigi', '栃木県' | replace: 'Tokushima', '徳島県' | replace: 'Tottori', '鳥取県' | replace: 'Toyama', '富山県' | replace: 'Tōkyō', '東京都' | replace: 'Miyagi', '宮城県' | replace: 'Wakayama', '和 歌山県' | replace: 'Kanagawa', '神奈川県' | replace: 'Kagoshima', '鹿児島県' }}<br>
■市区郡町村(12文字以内):{{order.shippingAddress.city}}<br>
■町・番地(16文字以内):{{order.shippingAddress.address1}}<br>
■建物名等(16文字以内):{{order.shippingAddress.address2}}<br>
<br>
※都道府県+市区郡町村+町・番地+アパートマンション名合計32文字まで<br>
<br>
■タグ:{% for tags_item in order.tags %}{{tags_item}}、{% endfor %}<br>
■備考:{{order.note}}<br>
----------------------------------
<br>
※こちらのメールはShopifyに連携しているアプリ「Shopify Flow」を使って送信されています。<br>
なお、チェックアウト画面での文字数制限は「Checkout Logic」というアプリで解決できました!
※無料版で使いたいので不格好ですが以下のように設定すると文字数オーバーの場合はエラーが出て注文ができなくなりました!
よろしくお願いいたします。
> 試しているのですが、文字数制限内でもエラー通知メールが届いてしまいます…。
> 一旦合計数ではなく、都道府県などの項目別で設定して検証してみたいと思います!
左様でしたか。検証が不十分で恐縮です。
> ちなみに、通知メール(Send internal email)で、都道府県、市区町村、住所のそれぞれの文字数を本文に反映することは可能でしょうか?
> ※以下の「(●文字)」の部分に文字数を反映させたいです。
一例の紹介になってしまうのですが、
氏名であれば、
{% assign fullname = order.shippingAddress.lastName | append: " " | append: order.shippingAddress.firstName %}
■氏名(16文字以内):{{ fullname }} ({{ fullname | size }}文字)<br>
となるかと思います。
> なお、チェックアウト画面での文字数制限は「Checkout Logic」というアプリで解決できました!
> ※無料版で使いたいので不格好ですが以下のように設定すると文字数オーバーの場合はエラーが出て注文ができなくなりました!
なるほどです。
Shopify Functionsに、チェックアウトのバリデーションを行う機能もあるので、おそらくそれを利用したアプリが公開されていたのですね。
勉強になりました。
サポートの選択肢が増えていく中、最適となる選択の判断が難しくなっているかと存じます。今回は問題の解決に最適となるサポートの選択方法を、紹介させて頂きます。 選択肢のご紹介...
By Mirai Oct 6, 20242023年初頭、Shopifyペイメントアカウント、及びShopifyアカウント全体のセキュリティを強化する為の変更が適用されました。ユーザーのアカウントセキュリティを強化す...
By Mirai Sep 29, 2024概要: 年末/年明けは、消費者が最もショッピングを行う時期の一つです。特に、ブラックフライデー・サイバーマンデー(BFCM)は、世界中で注目される大規模なセールイベントであ...
By JapanGuru Sep 25, 2024