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

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

プラス: スクリプトとScript Editorアプリは、Shopify Plusのマーチャントのみ利用できます。

スクリプトには、さまざまなタイプがあります。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 grams カート内にある項目すべての合計重量を返します。

CartDiscount::FixedAmount

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

CartDiscount::Percentage

CartDiscount::Percentageオブジェクトを使用したスクリプトメソッド
方法 戻り値の種類 説明
.code String ディスカウントを適用するために使用されるディスカウントコードを返します。
.percentage Integer ディスカウントの割合額を返します。
.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 お客様がマーケティングを受け入れているかどうかを返します。

項目

<tdグラム
LineItemオブジェクトを使用したスクリプトメソッド
方法 戻り値の種類 説明
.grams 項目の合計重量を返します。
.line_price Money 項目の価格
.discounted? Boolean ディスカウントが項目の価格を変更したかどうかを返します。
.properties hash この項目に指定されたプロパティを返します。
.variant バリエーション 項目で表示される特定の商品バリエーションを返します。
.quantity Integer この項目の数量を返します。

リスト

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

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

.& リスト

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

.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 example

このサンプルスクリプトでは、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 String 配送料の説明のマークアップを返します。
.name String 配送料の名前を返します。
.price Money 配送料の価格を返します。
.source String 配送料に関連付けられたソース (配送業者) を返します。
.change_name(String new_name, { message: String }) 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で販売を開始する準備はできていますか?

無料体験を試す