Shopifyスクリプトの要件と制限
Shopifyスクリプトには、セキュリティを強化し、ストアにいるお客様が何人であってもスクリプトを確実に実行できるようにするために、いくつかの制限事項が存在します。Shopifyストアのスクリプトを開発する場合、以下の制限事項に留意してください。
目次
オンラインストアとストアフロントAPI
スクリプトを作成または編集するときは、オンラインストアでのみ実行するのか、オンラインストアと以下のアプリで実行するのかを選択します。
- ストアフロントAPI、JavaScript Buy SDK、またはMobile Buy SDK (AndroidおよびiOS) で構築されたカスタムアプリ
- チェックアウトを生成するカスタムアプリ
- TapcartおよびPlobalアプリモバイルアプリビルダー
スクリプトが機能するには、ウェブサイトにショッピングカート機能が組み込まれている必要があるため、スクリプトを、購入ボタン、またはMetaのFacebookとInstagramの販売チャネルとともに利用することはできません。
公開されたスクリプト
1つのスクリプトタイプにつき一度に1つのスクリプトのみ公開できます。たとえば、項目のスクリプトと配送料のスクリプトを公開することはできますが、同時に2つの項目スクリプトを公開することはできません。
Shopify スクリプトの最大数
最大200個のShopify スクリプトを作成することができます。
下書き注文
下書き注文、あるいは下書き注文のチェックアウトでは、項目スクリプト、配送料スクリプト、決済スクリプトは機能しません。
メタフィールド
Shopify スクリプトはメタフィールドにアクセスできません。
カートおよびチェックアウトの属性
Shopify スクリプトはShopify Liquidカートの属性にアクセスできません。これらの属性をカートページに追加してお客様から追加情報を収集することができますが、その属性を使用するスクリプトを作成することはできません。
クーポンコード
クーポンコード適用の有無、ディスカウント金額、ディスカウントの種類 (定額、割引率、または配送) にスクリプトを実行することができます。クーポンコードの適用方法 (カート固有か項目固有かなど) などに関してはスクリプトを実行することはできません。つまり、そのスクリプトは、ディスカウント後の合計額や自動ディスカウントには実行できません。
カートに適用されるディスカウントを使用する項目スクリプトと配送スクリプトは、ディスカウントの組み合わせに対応していません。この.discount_code
方法は、1つのクーポンコードのみを返します。ディスカウントの組み合わせを使用した複数のクーポンコードを含むカートには対応していません。
項目
アイテムをカートに追加したり、アイテムの価格を上げたりすることにスクリプトを実行することはできません。
配送料
配送料を上げることにスクリプトを実行することはできません。
複数の通貨
スクリプトは複数通貨で正常に機能しない場合があります。スクリプトが、ストアの主な通貨以外の通貨でのカートやチェックアウトで確実に機能するようにするには、スクリプトをShopify Functionsに移行する必要があります。
正規表現
正規表現のマッチングには対応していません。項目スクリプトを作成する場合、ワークアラウンドとして以下のいずれかのメソッドを使用できます。
-
split
方法 -
start_with
方法とend_with
方法 -
include
方法
テーマ
スクリプトに対応し、お客様を混乱させないために、Liquidテーマを更新することが必要になる場合があります。たとえば、項目のディスカウントはすべてのテーマでカートに表示されるわけではありません。この場合、テーマを編集してカート内の項目のディスカウントを表示する必要があります。Liquidテーマに加えることが可能な変更のタイプに関する詳細はこちらをご覧ください。
リソース
スクリプトに使用できるCPUとメモリの量は限られています。スクリプト用に予約されたリソースは、カートのサイズとスクリプトに必要な計算量によって異なります。Shopifyではこれらのリソース制限を慎重に追跡して、スクリプトが意図したとおりに動作できるようにします。
スクリプトをテストする場合、スクリプトの使用に割り当てられたリソースの割合をScript Editorコンソールで印刷できます。
入力および出力
いくつかの例外を除き、Shopifyスクリプトは入力および出力できません。これにより、スクリプトでウェブ要求やデータベース呼び出しを実行できず、ユーザーからの入力も取得できません。
puts
方法は、Script Editorアプリでコンソールにテキストを印刷するために使用できます。
時間とランダム性
スクリプトは、ランダム、または時間ベースの計算を含むことができません。Shopify スクリプトでTime
オブジェクトとrand
メソッドにアクセスすることはできません。
カートの合計が再計算されるたびにスクリプトが実行されるため、お客様がカートを頻繁に変更すると、時間ベースまたはランダムな数字の生成に基づくスクリプトが、予測できない結果または混乱する結果を招く可能性があります。ただし、Launchpadアプリを使用して、イベント中にスクリプトを実行するようにスケジュールすることができます。
スクリプトの文字制限
最大40,960文字のスクリプトを作成できます。
サブスクリプション注文
Lineitemスクリプトと配送スクリプトがサブスクリプション商品のディスカウントを作成した場合、ディスカウントは以下の決済に適用されます。
- スケジュール済みの注文には適用されず、後払い決済の初回決済のみ
- プリペイドサブスクリプションの注文の全額
サブスクリプションとスクリプトについて詳しくはこちらをご覧ください。
簡単なチェックアウト
簡単なチェックアウトでShopifyスクリプトを使用する場合、お客様が簡単な決済方法を選択した後に、配送ディスカウントが適用されます。そのため、注文価格への変更は、お客様のデバイスやブラウザには反映されません。お客様には、簡単なチェックアウトで元の価格が表示されますが、正しいディスカウント価格が請求されます。
Shopify Point of Sale(Point of Sale)
Shopifyスクリプトは、Shopify POSでは機能しません。
決済ゲートウェイサービスの名前を変更する
ゲートウェイの名前として表示される画像やロゴがある決済ゲートウェイサービスの名前は変更できません。名前の横にロゴ画像が付いている決済ゲートウェイサービスの名前は変更できます。
チェックアウト時に配送を分割する
配送スクリプトは、Shopify Checkoutの分割配送に対応していません。配送スクリプトを使用しており、分割配送を有効にした場合、チェックアウト時にお客様には分割配送が表示されません。