Shopify スクリプトAPIのリファレンス

スクリプトはRuby APIで書かれているため、制御と柔軟性が大幅に向上しています。

スクリプトには、さまざまなタイプがあります。Script Editorアプリでスクリプトを作成する場合、どのスクリプトテンプレートで始めるかに基づいて、スクリプトにタイプが割り当てられます。

項目スクリプト

項目スクリプトはカート内の項目に作用し、価格の変更やディスカウントの付与を行えます。このスクリプトは、カートに変更があった時点で実行されます。

サブスクリプションをディスカウントする項目スクリプトは、サブスクリプションの最初の決済にのみ適用されます。続く決済は、スクリプトによりディスカウントされません。

一部のメソッドは、項目スクリプトでのみ使用できます

配送スクリプト

配送スクリプトは配送と相互作用し、配送方法を変更することができ、配送料のディスカウントを提供できます。これらのスクリプトは、チェックアウトが配送オプションのページに到達した時点で実行されます。

サブスクリプションの配送料をディスカウントする配送スクリプトは、サブスクリプションの初回決済にのみ適用されます。続く決済では、スクリプトによりディスカウントされません。

一部のメソッドは、配送スクリプトでのみ使用できます

決済スクリプト

決済スクリプトは決済と相互作用し、決済ゲートウェイサービスの名前の変更、非表示、並び替えを行えます。決済スクリプトは、チェックアウト画面の前に表示されるApple Payなどの決済ゲートウェイサービスとは相互作用しません。このスクリプトは、チェックアウトが支払いページに到達する時点で実行されます。

一部のメソッドは、決済スクリプトでのみ使用できます

一般的なメソッド

以下のメソッドは、さまざまなスクリプトで使用できます。

入力

スクリプト入力メソッド
方法 戻り値の種類 説明
.cart カート 変更可能なカートのオブジェクトを返します。
.locale 文字列 顧客のロケールを返します。enfrまたはpt-BRなどです。

カート

カートのオブジェクトは、オンラインストアでのみ使用可能です。一部のチェックアウト離脱からは、カートのオブジェクトにアクセスできます。しかし、お客様が一旦チェックアウトを閉じた後にチェックアウト離脱にアクセスした場合、チェックアウト前の状態に戻り、カートのオブジェクトはなくなります。決済未完了の通知メールによってストアフロントの迂回が起こったためです。

Cartオブジェクトを使用したスクリプトメソッド
方法 戻り値の種類 説明
.customer 顧客 カートのオーナーを返します (存在する場合)。
.shipping_address 配送先住所 カートオーナーの配送先住所を返します (存在する場合)。
.discount_code 可変 以下の値を返します。

discount_codeは、ディスカウントがカートに適用されている場合に表示されます。カートの価格が必ず変わるというわけではありません。たとえば、合計が50ドルを超えるカートにディスカウントが適用され、スクリプトによってカート価格が50ドル未満になると、discount_codeが表示されたままでもカートの価格は変更されません。

discount_codeの例を参照してください。

.line_items List<LineItem> カート内の項目を含むリストを返します。
.presentment_currency List<String> 顧客の現地 (表示) 通貨を表示します (ISO 4217形式)。たとえば、米ドル。
.subtotal_price Money 項目のディスカウント適用後、およびクーポンコードが適用される前のカートの小計金額を返します。
.total_weight グラム カート内にある項目すべての合計重量を返します。

CartDiscount::FixedAmount

CartDiscount:: FixedAmountオブジェクトを使用したスクリプトメソッド
方法 戻り値の種類 説明
.code String ディスカウントを適用するために使用されるクーポンコードを返します。
.amount Money ディスカウントの金額を返します。
.reject({ message: String }) nil カートに適用されたクーポンコードを拒否します。messageが必要です。
.rejected? Boolean クーポンコードが拒否されたかどうかを返します。

CartDiscount::Percentage

CartDiscount::Percentageオブジェクトを使用したスクリプトメソッド
方法 戻り値の種類 説明
.code String ディスカウントを適用するために使用されるクーポンコードを返します。
.percentage ディスカウントの割合額を返します。
.reject({ message: String }) nil カートに適用されたクーポンコードを拒否します。messageが必要です。
.rejected? Boolean クーポンコードが拒否されたかどうかを返します。

CartDiscount::Shipping

CartDiscount::Shippingオブジェクトを使用したスクリプトメソッド
方法 戻り値の種類 説明
.code String ディスカウントを適用するために使用されるクーポンコードを返します。
.reject({ message: String }) nil カートに適用されたクーポンコードを拒否します。messageが必要です。
.rejected? Boolean クーポンコードが拒否されたかどうかを返します。

顧客

Customerオブジェクトを使用したスクリプトメソッド
方法 戻り値の種類 説明
.id Integer お客様のID番号を返します。
.email String お客様のメールアドレスを返します。
.tags List<Tag> お客様に設定されたタグを表す文字列のリストを返します。
.orders_count Integer お客様が発注した注文の総数を返します。
.total_spent Money お客様がすべての注文に支払った合計金額を返します。
.accepts_marketing? Boolean お客様がマーケティングを受け入れているかどうかを返します。

LineItem

<tdグラム
LineItemオブジェクトを使用したスクリプトメソッド
方法 戻り値の種類 説明
.grams 項目の合計重量を返します。
.line_price Money 項目の価格
.discounted? Boolean スクリプトまたは手動で適用されたディスカウントによって、項目の価格がディスカウントされたかどうかを返します。クーポンコードを使用しても戻り値には影響しません。
.properties hash この項目に指定されたプロパティを返します。
.variant バリエーション 項目で表示される特定の商品バリエーションを返します。
.quantity Integer この項目の数量を返します。
.selling_plan_id Integer 項目の販売プランのIDを返します。このメソッドは、ストアでサブスクリプションを販売し、スクリプトにより商品バリエーションがサブスクリプションとして販売されたときに検出されるようにしたい場合に有用です。

リスト

Listオブジェクトを使用したスクリプトメソッド
方法 戻り値の種類 説明
.new リスト リストを表示する新しいオブジェクトを作成します。
.[] Elementまたはnil

指定されたインデックスの要素を返します。

.& リスト

重複しない2つのリストに共通の要素を含む、新しいリストを返します。

.delete_if リスト オプションのコードブロックを使用して要素を削除します。Rubyのdelete_ifメソッドのドキュメントを参照してください。
.empty? Boolean

リストに要素が含まれていない場合にtrueを返します。

.first Elementまたはnil

最初の要素を返すか、リストが空の場合はnilを返します。

.index(*args, &block) intまたはnil

リストの最初の要素であるインデックスを返します。引数の代わりにブロックが渡される場合、ブロックがtrueである最初の要素であるインデックスを返します。

.rindex(*args, &block) intまたはnil

リストの最後の要素であるインデックスを返します。引数の代わりにブロックが渡される場合、ブロックがtrueである最初の要素であるインデックスを返します。

.last Elementまたはnil

最後の要素を返すか、リストが空の場合はnilを返します。

.length int

リスト内の要素の数を返します。

.size int

lengthのエイリアスです。

.each(*args, &block) リスト

リスト内の各要素に対してブロックを1回呼び出し、要素をパラメーターとしてブロックに渡します。

配送先住所

ShippingAddressオブジェクトを使用したスクリプトメソッド
方法 戻り値の種類 説明
.name 文字列 配送先住所に関連付けられた個人の名前を返します。
.address1 文字列 配送先住所の住所部分を返します。
.address2 文字列 配送先住所の住所部分の、オプションの追加フィールドを返します。
.phone 文字列 配送先住所の電話番号を返します。
.city 文字列 配送先住所の市区町村を返します。
.zip 文字列 配送先住所の郵便番号を返します。
.province 文字列 配送先住所の都道府県または州を返します。
.province_code 文字列 配送先住所の都道府県または州の省略値を返します。
.country_code 文字列 配送先住所の国の省略値を返します。

Money

Moneyオブジェクトを使用したスクリプトメソッド
方法 戻り値の種類 説明
.derived_from_presentment(customer_cents:X) Money 金額 (セント) を顧客の現地 (表示) 通貨からストアの通貨に変換します。このメソッドは、セントでの数値を処理するcustomer_centsパラメータを受け付けます。たとえば、Money.derived_from_presentment(customer_cents: 500)です。
.new Money 価格を表示する新しいオブジェクトを作成します。
.zero Money

価格が0の新しいオブジェクトを作成します。

+ Money Moneyオブジェクトを2つ追加します。
- Money 1つのMoneyオブジェクトを別のオブジェクトから差し引きます。
* Money Moneyオブジェクトに数値を乗じます。

Moneyの例

Money.new(cents: 1000)

1,000セントまたは10ドルを表示するMoneyオブジェクトを作成します。

Money.new(cents: 100) * 50

1ドルを表示してから50を乗算するMoneyオブジェクトを作成します。50ドルを表示するMoneyオブジェクトを返します。

バリエーション

Variantオブジェクトを使用したスクリプトメソッド
方法 戻り値の種類 説明
.id Integer バリエーションのID番号を返します。
.price Money バリエーションの単価を返します。
.product 商品 バリエーションの関連商品を返します。
.skus List<String> 在庫の追跡によく使用されるバリエーションの最小管理単位 (SKU) を返します。
.title String バリエーション名を返します。

商品

Productオブジェクトを使用したスクリプトメソッド
方法 戻り値の種類 説明
.id Integer 商品のID番号を返します。
.gift_card? Boolean 商品がギフトカードかどうかを返します。
.tags List<Tag> この商品に設定されているタグを表示する文字列のリストを返します。
.product_type String 通常は絞り込みや検索に使用される、商品にタグを付けることができる分類です。
.vendor String この商品の販売元を返します。

Kernel

Kernelはすべてのクラスに含まれるRubyモジュールです。そのため、Kernelのメソッドはすべてのオブジェクトで使用できます。このメソッドは、グローバル関数が他の言語で動作するのと同じ方法で動作します。

Kernelオブジェクトを使用したスクリプトメソッド
方法 戻り値の種類 説明
.exit なし エラーなしで現在のスクリプトの実行を終了します。Output.cartに何かが割り当てられる前に実行される場合、スクリプトには効果がありません。これは、お客様にスクリプトを実行する資格がない場合などにスクリプトを終了するのに便利な方法です。

Kernelの例

customer = Input.cart.customer
if customer && customer.email.end_with?("@mycompany.com")
  # Employees are not eligible for this promotion.
  exit
end

項目のメソッド

以下のメソッドは、項目スクリプトでのみ使用できます。

カート

項目スクリプトでCartオブジェクトを使用したスクリプトメソッド
方法 戻り値の種類 説明
.subtotal_price_was Money ディスカウントが適用される前のカートの小計金額を返します。
.subtotal_price_changed? Boolean 小計金額が変更されたかどうかを返します。

項目

項目スクリプトでLineItemオブジェクトを使用したスクリプトメソッド
方法 戻り値の種類 説明
.change_line_price(Money new_price, { message: String }) Money 項目の価格を指定した金額に変更します。messageが必要です。new_priceは現在の価格より低い必要があります。
.original_line_price Money スクリプトとディスカウントが適用される前の、項目の元の価格を返します。
.line_price_was Money 現在のスクリプトによって変更が適用される前の、項目の価格を返します。
.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が元の項目から削除する数量を指定します。

.splitの例

このサンプルスクリプトでは、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

バリエーション

項目スクリプトでVariantオブジェクトを使用したスクリプトメソッド
方法 戻り値の種類 説明
.compare_at_price Money バリエーションの割引前価格を返します。バリエーションに割引前価格が設定されていない場合はnilを返します。

配送方法

以下のメソッドは、配送スクリプトでのみ使用できます。

入力

配送スクリプトでInputオブジェクトを使用したスクリプトメッソッド
方法 戻り値の種類 説明
.shipping_rates ShippingRateList すべての配送料のリストを返します。

ShippingRateList

配送スクリプトでShippingRateListオブジェクトを使用したスクリプトメッソッド
方法 戻り値の種類 説明
.delete_if ShippingRateList オプションのコードブロックを使用して配送料を削除します。Rubyのdelete_ifメソッドのドキュメントを参照してください。
.sort! ShippingRateList 比較演算子を使用するか、オプションのコードブロックを使用して配送料を並び替えます。Rubyのsort!メソッドのドキュメントを参照してください。
.sort_by! ShippingRateList オプションのコードブロックを使用して配送料を並び替えます。Rubyのsort_by!メソッドのドキュメントを参照してください。

ShippingRate

配送スクリプトでShippingRateオブジェクトを使用したスクリプトメッソッド
方法 戻り値の種類 説明
.code String 配送料のコードを返します。
.markup Money 該当する場合は、配送料のマークアップを返します。
.name String 配送料の名前を返します。change_nameメソッドを使用して変更できます。
.price Money 配送料の価格を返します。
.source String 該当する場合は、配送料に関連付けられたソース (配送業者) を返します。ソースは変更できません。
.change_name(String new_name) String 配送料の名前 (最大255文字) を変更します。ソースを変更、削除、または非表示にすることはできません。
.apply_discount(Money discount, { message: String }) Money 指定した定額のディスカウントを適用します。価格を0より低くすることはできません。メッセージが必要です。
.phone_required? Boolean 配送料を受領するために電話番号が必要な場合はtrueを返し、電話番号が必要ない場合はfalseを返します。

決済方法

以下のメソッドは、決済スクリプトでのみ使用できます。

入力

決済スクリプトでInputオブジェクトを使用したスクリプトメッソッド
方法 戻り値の種類 説明
.payment_gateways PaymentGatewaysList ストア内の決済ゲートウェイサービスすべてのリストを返します。

PaymentGatewayList

決済スクリプトでPaymentGatewayListオブジェクトを使用したスクリプトメソッド
方法 戻り値の種類 説明
.delete_if PaymentGatewayList オプションのコードブロックを使用して決済ゲートウェイサービスを削除します。Rubyのdelete_ifメソッドのドキュメントを参照してください。
.sort! PaymentGatewayList 比較演算子を使用するか、オプションのコードブロックを使用して決済サービスを並び替えます。Rubyのsort!メソッドのドキュメントを参照してください。
.sort_by! PaymentGatewayList オプションのコードブロックを使用して決済サービスを並び替えます。Rubyのsort_by!メソッドのドキュメントを参照してください。

PaymentGateway

方法 戻り値の種類 説明
.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

詳しくはこちら

詳しくはこちら:

Shopifyで販売を開始する準備はできていますか?

無料体験を試す