Shopify スクリプトAPIのリファレンス
スクリプトはRuby APIで書かれているため、制御と柔軟性が大幅に向上しています。
スクリプトには、さまざまなタイプがあります。Script Editorアプリでスクリプトを作成する場合、どのスクリプトテンプレートで始めるかに基づいて、スクリプトにタイプが割り当てられます。
項目スクリプト
項目スクリプトはカート内の項目に作用し、価格の変更やディスカウントの付与を行えます。このスクリプトは、カートに変更があった時点で実行されます。
サブスクリプションをディスカウントする項目スクリプトは、サブスクリプションの最初の決済にのみ適用されます。続く決済は、スクリプトによりディスカウントされません。
一部のメソッドは、項目スクリプトでのみ使用できます。
配送スクリプト
配送スクリプトは配送と相互作用し、配送方法を変更することができ、配送料のディスカウントを提供できます。これらのスクリプトは、チェックアウトが配送オプションのページに到達した時点で実行されます。
サブスクリプションの配送料をディスカウントする配送スクリプトは、サブスクリプションの初回決済にのみ適用されます。続く決済では、スクリプトによりディスカウントされません。
<p>一部のメソッドは、<a href="#shipping-methods">配送スクリプトでのみ使用できます</a>。</p>
決済スクリプト
決済スクリプトは決済と相互作用し、決済ゲートウェイサービスの名前の変更、非表示、並び替えを行えます。決済スクリプトは、チェックアウト画面の前に表示されるApple Payなどの決済ゲートウェイサービスとは相互作用しません。このスクリプトは、チェックアウトが支払いページに到達する時点で実行されます。
一部のメソッドは、決済スクリプトでのみ使用できます。
一般的なメソッド
以下のメソッドは、さまざまなスクリプトで使用できます。
入力
方法 | 戻り値の種類 | 説明 |
---|---|---|
.cart | カート | 変更可能なカートのオブジェクトを返します。 |
.locale | 文字列 | 顧客のロケールを返します。en 、fr またはpt-BR などです。 |
カートのオブジェクトは、オンラインストアでのみ使用可能です。一部のチェックアウト離脱からは、カートのオブジェクトにアクセスできます。しかし、お客様が一旦チェックアウトを閉じた後で、改めてチェックアウト離脱にアクセスした場合は、チェックアウト前の状態に戻り、カートのオブジェクトはなくなります。それは、決済未完了の通知メールによってストアフロントの迂回が起こったためです。
方法 | 戻り値の種類 | 説明 | |
---|---|---|---|
.customer | お客様 | カートのオーナーを返します (存在する場合)。 | |
.shipping_address | 配送先住所 | カートオーナーの配送先住所を返します (存在する場合)。 | |
.discount_code | 可変 |
以下の値を返します。
List<LineItem> | カート内の項目を含むリストを返します。 |
.presentment_currency | List<String> | 顧客の現地 (表示) 通貨を表示します (ISO 4217形式)。たとえば、米ドル。 | |
.subtotal_price | 資金 | 項目のディスカウント適用後、およびクーポンコードが適用される前のカートの小計金額を返します。 | |
.total_weight | グラム | カート内にある項目すべての合計重量を返します。 |
方法 | 戻り値の種類 | 説明 |
---|---|---|
.code | String | ディスカウントを適用するために使用されるクーポンコードを返します。 |
.amount | 資金 | ディスカウントの金額を返します。 |
.reject({ message: String }) | nil | カートに適用されたクーポンコードを拒否します。message が必要です。 |
.rejected? | Boolean | クーポンコードが拒否されたかどうかを返します。 |
方法 | 戻り値の種類 | 説明 |
---|---|---|
.code | String | ディスカウントを適用するために使用されるクーポンコードを返します。 |
.percentage | 小 | ディスカウントの割合額を返します。 |
.reject({ message: String }) | nil | カートに適用されたクーポンコードを拒否します。message が必要です。 |
.rejected? | Boolean | クーポンコードが拒否されたかどうかを返します。 |
方法 | 戻り値の種類 | 説明 |
---|---|---|
.code | String | ディスカウントを適用するために使用されるクーポンコードを返します。 |
.reject({ message: String }) | nil | カートに適用されたクーポンコードを拒否します。message が必要です。 |
.rejected? | Boolean | クーポンコードが拒否されたかどうかを返します。 |
方法 | 戻り値の種類 | 説明 |
---|---|---|
.id | Integer | お客様のID番号を返します。 |
String | お客様のメールアドレスを返します。 | |
.tags | List<Tag> | お客様に設定されたタグを表す文字列のリストを返します。 |
.orders_count | Integer | お客様が発注した注文の総数を返します。 |
.total_spent | 資金 | お客様がすべての注文に支払った合計金額を返します。 |
.accepts_marketing? | Boolean | お客様がマーケティングを受け入れているかどうかを返します。 |
方法 | 戻り値の種類 | 説明 |
---|---|---|
.grams | グラム | 項目の合計重量を返します。 |
.line_price | 資金 | 項目の価格 |
.discounted? | Boolean | スクリプトまたは手動で適用されたディスカウントによって、項目の価格がディスカウントされたかどうかを返します。クーポンコードを使用しても戻り値には影響しません。 |
.properties | hash | この項目に指定されたプロパティを返します。 |
.variant | バリエーション | 項目で表示される特定の商品バリエーションを返します。 |
.quantity | Integer | この項目の数量を返します。 |
.selling_plan_id | Integer | 項目の販売プランのIDを返します。このメソッドは、ストアでサブスクリプションを販売し、スクリプトにより商品バリエーションがサブスクリプションとして販売されたときに検出されるようにしたい場合に有用です。 |
方法 | 戻り値の種類 | 説明 |
---|---|---|
.new | リスト | リストを表示する新しいオブジェクトを作成します。 |
.[] | Elementまたはnil |
指定されたインデックスの要素を返します。 |
.& | リスト |
重複しない2つのリストに共通の要素を含む、新しいリストを返します。 |
.delete_if | リスト | オプションのコードブロックを使用して要素を削除します。Rubyのdelete_if メソッドのドキュメントを参照してください。 | int |
リスト内の要素の数を返します。 |
.size | int |
lengthのエイリアスです。 |
.each(*args, &block) | リスト |
リスト内の各要素に対してブロックを1回呼び出し、要素をパラメーターとしてブロックに渡します。 |
方法 | 戻り値の種類 | 説明 |
---|---|---|
.name | 文字列 | 配送先住所に関連付けられた個人の名前を返します。 |
.address1 | 文字列 | 配送先住所の住所部分を返します。 |
.address2 | 文字列 | 配送先住所の住所部分の、オプションの追加フィールドを返します。 |
.phone | 文字列 | 配送先住所の電話番号を返します。 |
.city | 文字列 | 配送先住所の市区町村を返します。 |
.zip | 文字列 | 配送先住所の郵便番号を返します。 |
.province | 文字列 | 配送先住所の都道府県または州を返します。 |
.province_code | 文字列 | 配送先住所の都道府県または州の省略値を返します。 |
.country_code | 文字列 | 配送先住所の国の省略値を返します。 |
方法 | 戻り値の種類 | 説明 |
---|---|---|
.derived_from_presentment(customer_cents:X) | 資金 | 金額 (セント) を顧客の現地 (表示) 通貨からストアの通貨に変換します。このメソッドは、セントでの数値を処理するcustomer_cents パラメータを受け付けます。たとえば、Money.derived_from_presentment(customer_cents: 500) です。 |
.new | 資金 | 価格を表示する新しいオブジェクトを作成します。 |
.zero | 資金 |
価格が0の新しいオブジェクトを作成します。 |
+ | 資金 |
Money オブジェクトを2つ追加します。 |
- | 資金 | 1つのMoney オブジェクトを別のオブジェクトから差し引きます。 |
* | 資金 |
Money オブジェクトに数値を乗じます。 |
Money.new(cents: 1000)
1,000セントまたは10ドルを表示するMoney
オブジェクトを作成します。
Money.new(cents: 100) * 50
1ドルを表示してから50を乗算するMoney
オブジェクトを作成します。50ドルを表示するMoney
オブジェクトを返します。
バリエーション
方法 | 戻り値の種類 | 説明 |
---|---|---|
.id | Integer | バリエーションのID番号を返します。 |
.price | 資金 | バリエーションの単価を返します。 |
.product | 商品 | バリエーションの関連商品を返します。 |
.skus | List<String> | 在庫の追跡によく使用されるバリエーションの最小管理単位 (SKU) を返します。 |
.title | String | バリエーション名を返します。 |
方法 | 戻り値の種類 | 説明 |
---|---|---|
.id | Integer | 商品のID番号を返します。 |
.gift_card? | Boolean | 商品がギフトカードかどうかを返します。 |
.tags | List<Tag> | この商品に設定されているタグを表示する文字列のリストを返します。 |
.product_type | String | 通常は絞り込みや検索に使用される、商品にタグを付けることができる分類です。 |
.vendor | String | この商品の販売元を返します。 |
Kernelはすべてのクラスに含まれるRubyモジュールです。そのため、Kernelのメソッドはすべてのオブジェクトで使用できます。このメソッドは、グローバル関数が他の言語で動作するのと同じ方法で動作します。
方法 | 戻り値の種類 | 説明 |
---|---|---|
.exit | なし | エラーなしで現在のスクリプトの実行を終了します。Output.cart に何かが割り当てられる前に実行される場合、スクリプトには効果がありません。これは、お客様にスクリプトを実行する資格がない場合などにスクリプトを終了するのに便利な方法です。 |
customer = Input.cart.customer
if customer && customer.email.end_with?("@mycompany.com")
# Employees are not eligible for this promotion.
exit
end
項目のメソッド
以下のメソッドは、項目スクリプトでのみ使用できます。
カート
方法 | 戻り値の種類 | 説明 |
---|---|---|
.subtotal_price_was | 資金 | ディスカウントが適用される前のカートの小計金額を返します。 |
.subtotal_price_changed? | Boolean | 小計金額が変更されたかどうかを返します。 |
方法 | 戻り値の種類 | 説明 |
---|---|---|
.change_line_price(Money new_price, { message: String }) | 資金 | 項目の価格を指定した金額に変更します。message が必要です。new_price は現在の価格より低い必要があります。 |
.original_line_price | 資金 | スクリプトとディスカウントが適用される前の、項目の元の価格を返します。 |
.line_price_was | 資金 | 現在のスクリプトによって変更が適用される前の、項目の価格を返します。 |
.line_price_changed? | Boolean | 項目の価格が変更されたかどうかを返します。 |
.change_properties(hash new_properties, { message: String }) | hash | 項目の新しいプロパティを設定します。元のプロパティのhashはproperties_was に保存され、メソッドに渡されるプロパティのhashが項目の新しいプロパティになります。 |
.properties_was | hash | 変更が適用される前に、項目の元のプロパティのhashを返します。 |
.properties_changed? | Boolean | 項目のプロパティが変更されたかどうかを返します。 |
.split({ take: Integer }) | 項目 | 項目を2つの項目に分割します。新しい項目を作成するために、take が元の項目から削除する数量を指定します。 |
このサンプルスクリプトでは、original_line_item
という項目を2つの項目に分けます。新しい項目の数量は1です (take: 1
により指定)。これにより、スクリプトは新しい項目に「3つ目の帽子は5ドル」とメッセージを添付して、ディスカウント価格を適用します。
if original_line_item.quantity >= 3
new_line_item = original_line_item.split(take: 1)
new_line_item.change_line_price(Money.new(cents: 500), message: "Third hat for 5 dollars")
cart.line_items << new_line_item
end
バリエーション
方法 | 戻り値の種類 | 説明 |
---|---|---|
.compare_at_price | 資金 | バリエーションの割引前価格を返します。バリエーションに割引前価格が設定されていない場合はnil を返します。 |
以下のメソッドは、配送スクリプトでのみ使用できます。
入力
方法 | 戻り値の種類 | 説明 |
---|---|---|
.shipping_rates | ShippingRateList | すべての配送料のリストを返します。 |
方法 | 戻り値の種類 | 説明 |
---|---|---|
.delete_if | ShippingRateList | オプションのコードブロックを使用して配送料を削除します。Rubyのdelete_if メソッドのドキュメントを参照してください。 |
.sort! | ShippingRateList | 比較演算子を使用するか、オプションのコードブロックを使用して配送料を並び替えます。Rubyのsort! メソッドのドキュメントを参照してください。 |
.sort_by! | ShippingRateList | オプションのコードブロックを使用して配送料を並び替えます。Rubyのsort_by! メソッドのドキュメントを参照してください。 |
方法 | 戻り値の種類 | 説明 |
---|---|---|
.code | String | 配送料のコードを返します。 |
.markup | 資金 | 該当する場合は、配送料のマークアップを返します。 |
.name | String | 配送料の名前を返します。change_name メソッドを使用して変更できます。 |
.price | 資金 | 配送料の価格を返します。 |
.source | String | 該当する場合は、配送料に関連付けられたソース (配送業者) を返します。ソースは変更できません。 |
.change_name(String new_name) | String | 配送料の名前 (最大255文字) を変更します。ソースを変更、削除、または非表示にすることはできません。 |
.apply_discount(Money discount, { message: String }) | 資金 | 指定した定額のディスカウントを適用します。価格を0より低くすることはできません。メッセージが必要です。 |
.phone_required? | Boolean | 配送料を受領するために電話番号が必要な場合はtrue を返し、電話番号が必要ない場合はfalse を返します。 |
以下のメソッドは、決済スクリプトでのみ使用できます。
入力
方法 | 戻り値の種類 | 説明 |
---|---|---|
.payment_gateways | PaymentGatewaysList | ストア内の決済ゲートウェイサービスすべてのリストを返します。 |
方法 | 戻り値の種類 | 説明 |
---|---|---|
.delete_if | PaymentGatewayList | オプションのコードブロックを使用して決済ゲートウェイサービスを削除します。Rubyのdelete_if メソッドのドキュメントを参照してください。 |
.sort! | PaymentGatewayList | 比較演算子を使用するか、オプションのコードブロックを使用して決済ゲートウェイサービスを並び替えます。Rubyのsort! メソッドのドキュメントを参照してください。 |
.sort_by! | PaymentGatewayList | オプションのコードブロックを使用して決済ゲートウェイサービスを並び替えます。Rubyのsort_by! メソッドのドキュメントを参照してください。 |
方法 | 戻り値の種類 | 説明 |
---|---|---|
.name | String | 決済ゲートウェイサービスの名前を返します。 |
.enabled_card_brands | List<String> |
決済ゲートウェイサービスがクレジットカードに対応している場合、ストアで許可されているクレジットカードのタイプが含まれるリストを返します。決済サービスがクレジットカードに対応していない場合、空のリストを返します。 |
.change_name(String new_name) | String | 決済ゲートウェイサービスの名前を変更します。ロゴ付きの決済ゲートウェイサービスの名前は変更できません。 |
以下の項目スクリプトの例では、お客様がギフトカードではない商品を注文すると、商品の価格が9ドル下がります。ストアへのすべての訪問でお客様が支払った合計金額も表示されます。
customer = Input.cart.customer Input.cart.line_items.each do |line_item| product = line_item.variant.product next if product.gift_card? line_item.change_line_price(line_item.line_price - Money.new(cents: 900), message: customer.total_spent) end Output.cart = Input.cart
詳しくはこちら
詳しくはこちら: