Shopify Scripts API-referanse

Skript skrives med et Ruby-API som gir deg mye kontroll og fleksibilitet.

Det finnes ulike skripttyper. Et skript tildeles en type når du oppretter det i Script Editor-appen, basert på hvilken skriptmal du velger å starte med:

Postskript

Postskript påvirker poster i handlekurven og kan endre priser og gi rabatter. Disse skriptene kjøres når det gjøres en endring i handlekurven.

Postskript som gir rabatt på et abonnement gjelder kun for den første betalingen for abonnementet. Senere betalinger rabatteres ikke av skriptet.

Noen metoder kan kun brukes i postskript.

Fraktskript

Fraktskript samhandler med frakt og kan endre fraktmetoder og gi rabatter på fraktpriser. Disse skriptene kjøres når kassen når siden for fraktalternativer.

Fraktskript som gir rabatt på fraktprisen for et abonnement gjelder kun for den første betalingen for abonnementet. Senere betalinger rabatteres ikke av skriptet.

<p>Some methods <a href="#shipping-methods">can only be used in shipping scripts</a>.</p>

Betalingsskript

Betalingsskript samhandler med innbetalinger og kan endre navn på, skjule og endre rekkefølgen på betalingsgatewayer. Vær oppmerksom på at betalingsskript ikke samhandler med betalingsgatewayer som vises før kasseskjermen, som for eksempel Apple Pay. Disse skriptene kjøres når kassen når betalingssiden.

Noen metoder kan kun brukes i betalingsskript.

Generelle metoder

Følgende metoder kan brukes i alle skripttyper:

Inndata

Inndatametoder for skript
MetodeReturtypeBeskrivelse
.cartCartReturnerer et endringsbart handlekurvobjekt.
.localestrengReturnerer kundens lokal. For eksempel en, fr eller pt-BR.

Cart

Handlekurvobjektet er kun tilgjengelig i nettbutikken. Noen forlatte kasser har tilgang til handlekurvobjektet. Hvis en kasse er lukket, og en kunde deretter besøker den forlatte kassen, sendes de til den forhåndsutfylte kassen og handlekurvobjektet finnes ikke lenger. Dette er fordi utstillingsvinduet har blitt omgått av e-postmeldingen for forlatt kasse.

Skriptmetoder som bruker Cart-objektet
MetodeReturtypeBeskrivelse
.customerCustomerReturnerer eieren av handlekurven (hvis noen).
.shipping_addressShippingAddressReturnerer leveringsadressen til eieren av handlekurven (hvis noen).
.discount_codevarierer Returnerer:

discount_code er til stede hvis en rabatt er lagt til handlekurven. Dette betyr ikke nødvendigvis at prisen på handlekurven endres. Hvis for eksempel en rabatt gjelder for handlekurver over 50 USD, og et skript reduserer handlekurvprisen til under 50 USD, er discount_code fortsatt til stede, men prisen på handlekurven endres ikke.

<p><a href="/manual/checkout-settings/script-editor/examples/vat-script">See an example of <code>discount_code</code></a>.</p>
  </td>
</tr>
<tr>
  <td scope="row">.line_items</td>
  <td><a href="#list">List</a>&lt;LineItem&gt;</td>
  <td>Returns a list containing the line items in the cart.</td>
</tr>
<tr>
  <td scope="row">.presentment_currency</td>
  <td><a href="#list">List</a>&lt;String&gt;</td>
  <td>Returns the customer's local (presentment) currency (in <a href="https://www.iso.org/iso-4217-currency-codes.html">ISO 4217</a> format). For example, USD. </td>
</tr>
<tr>
  <td scope="row">.subtotal_price</td>
  <td><a href="#money">Money</a></td>
  <td>Returns the subtotal price of the cart after line item discounts are applied but before discount codes are applied.</td>
</tr>
<tr>
  <td scope="row">.total_weight</td>
  <td><a href="https://shopify.dev/api/liquid/objects/line_item#line_item-grams">grams</a></td>
  <td>Returns the total weight of all the line items in the cart.</td>
</tr>

CartDiscount::FixedAmount

Skriptmetoder som bruker CartDiscount::FixedAmount-objektet
MetodeReturtypeBeskrivelse
.codeStrengReturnerer rabattkoden som brukes til å legge til rabatten.
.amountMoneyReturnerer rabattens pengebeløp.
.reject({ message: Streng })nilAvviser rabattkoden som er brukt på handlekurven. En message er påkrevd.
.rejected?BoolskReturnerer hvorvidt rabattkoden ble avvist.

CartDiscount::Percentage

Skriptmetoder som bruker CartDiscount::Percentage-objektet
MetodeReturtypeBeskrivelse
.codeStrengReturnerer rabattkoden som brukes til å legge til rabatten.
.percentageDesimalReturnerer rabattens prosentandel.
.reject({ message: Streng })nilAvviser rabattkoden som er brukt på handlekurven. En message er påkrevd.
.rejected?BoolskReturnerer hvorvidt rabattkoden ble avvist.

CartDiscount::Shipping

Skriptmetoder som bruker CartDiscount::Shipping-objektet
MetodeReturtypeBeskrivelse
.codeStrengReturnerer rabattkoden som brukes til å legge til rabatten.
.reject({ message: Streng })nilAvviser rabattkoden som er brukt på handlekurven. En message er påkrevd.
.rejected?BoolskReturnerer hvorvidt rabattkoden ble avvist.

Kunde

Skriptmetoder som bruker Kunde-objektet
MetodeReturtypeBeskrivelse
.idHeltallReturnerer kundens ID-nummer.
.emailStrengReturnerer kundens e-postadresse.
.tagsListe<Tag>Returnerer en liste med strenger som representerer eventuelle tagger som er angitt for en kunde.
.orders_countHeltallReturnerer totalt antall bestillinger en kunde har lagt inn.
.total_spentMoneyReturnerer totalbeløpet kunden har brukt på alle bestillinger.
.accepts_marketing?BoolskReturnerer om kunden godtar markedsføring.

Post

Skriptmetoder som bruker Post-objektet
MetodeReturtypeBeskrivelse
.gramsgramReturnerer den totale vekten for posten.
.line_priceMoneyPrisen for posten.
.discounted?BoolskReturnerer om prisen på en post er rabattert av et skript eller en manuelt brukt rabatt. Bruk av rabattkoder påvirker ikke returverdien.
.propertieshashReturnerer egenskapene som ble angitt for denne posten.
.variantVariantReturnerer den spesifikke produktvarianten som posten representerer.
.quantityHeltallReturnerer antallet for denne posten.
.selling_plan_idHeltallReturnerer ID-en til salgsplanen for posten. Denne metoden er nyttig når butikken selger abonnementer og du vil at skriptet skal oppdage når en produktvariant selges som et abonnement.

Liste

Skriptmetoder som bruker Liste-objektet
MetodeReturtypeBeskrivelse
.newListeOppretter et nytt objekt for å representere en liste.
.[]Element eller nil

Returnerer elementet ved den angitte indeksen.

.&Liste

Returnerer en ny liste som inneholder elementer som er felles for de to listene, uten duplikater.

.delete_ifListeSletter elementer ved hjelp av en valgfri kodeblokk. Se dokumentasjonen for Ruby's delete_if method.
.empty?Boolsk

Returnerer true hvis listen er tom.

.firstElement eller nil

Returnerer det første elementet, eller nil hvis listen er tom.

.index(*args, &block)heltall eller nil

Returnerer indeksen til det første elementet i listen. Hvis en blokk angis i stedet for et argument, returneres indeksen til det første elementet som blokken er sann for.

.rindex(*args, &block)heltall eller nil

Returnerer indeksen til det siste elementet i listen. Hvis en blokk angis i stedet for et argument, returneres indeksen til det første elementet som blokken er sann for.

.lastElement eller nil

Returnerer det siste elementet, eller nil hvis listen er tom.

.lengthheltall

Returnerer antall elementer i listen.

.sizeheltall

Alias for length.

.each(*args, &block)Liste

Kaller en blokk én gang for hvert element i listen, og sender elementet som en parameter til blokken.

Leveringsadresse

Skriptmetoder som bruker Leveringsadresse-objektet
MetodeReturtypeBeskrivelse
.namestrengReturnerer navnet på personen som er knyttet til leveringsadressen.
.address1strengReturnerer gateadressedelen av leveringsadressen.
.address2strengReturnerer det valgfrie tilleggsfeltet til gateadressedelen av leveringsadressen.
.phonestrengReturnerer telefonnummeret til leveringsadressen.
.citystrengReturnerer byen til leveringsadressen.
.zipstrengReturnerer postnummeret til leveringsadressen.
.provincestrengReturnerer provinsen/delstaten til leveringsadressen.
.province_codestrengReturnerer den forkortede verdien for provinsen/delstaten til leveringsadressen.
.country_codestrengReturnerer den forkortede verdien for landet til leveringsadressen.

Penger

Skriptmetoder som bruker Penger-objektet
MetodeReturtypeBeskrivelse
.derived_from_presentment(customer_cents:X)MoneyKonverterer et beløp (i cent) fra kundens lokale valuta (presentasjonsvaluta) til butikkens valuta. Denne metoden godtar customer_cents-parameteret, som godtar et tall i cent. For eksempel Money.derived_from_presentment(customer_cents: 500).
.newMoneyOppretter et nytt objekt for å representere en pris.
.zeroMoney

Oppretter et nytt objekt med en pris på null.

+MoneyLegger sammen to Money-objekter.
-MoneyTrekker ett Money-objekt fra et annet.
*MoneyMultipliserer et Money-objekt med et tall.

Money-eksempler

Money.new(cents: 1000)

Oppretter et Money-objekt som representerer 1000 cent, eller 10 $.

Money.new(cents: 100) * 50

Oppretter et Money-objekt som representerer 1 $, og multipliserer deretter beløpet med 50. Returnerer et Money-objekt som representerer 50 $.

Variant

Skriptmetoder som bruker Variant-objektet
MetodeReturtypeBeskrivelse
.idHeltallReturnerer ID-nummeret til varianten.
.priceMoneyReturnerer enhetsprisen til varianten.
.productProduktReturnerer det tilknyttede produktet til varianten.
.skusList<String>Returnerer lagerbeholdningsenhetene (SKU-ene) til varianten, som ofte brukes til å spore varelager.
.titleStrengReturnerer tittelen til varianten.

Produkt

Skriptmetoder som bruker Produkt-objektet
MetodeReturtypeBeskrivelse
.idHeltallReturnerer ID-nummeret til produktet.
.gift_card?BoolskReturnerer hvorvidt produktet er et gavekort.
.tagsListe<Tag>Returnerer en liste med strenger som representerer taggene som er angitt for dette produktet.
.product_typeStrengEn kategorisering et produkt kan tagges med, som vanligvis brukes til filtrering og søk.
.vendorStrengReturnerer selgeren av dette produktet.

Kernel

Kernel er en Ruby-modul som er inkludert i alle klasser. Resultatet er at metodene er tilgjengelige for alle objekter. Disse metodene fungerer på samme måte som globale funksjoner i andre språk.

Skriptmetoder som bruker Kernel-objektet
MetodeReturtypeBeskrivelse
.exitingenAvslutter kjøringen av det gjeldende skriptet uten feil. Hvis dette kjøres før noe tilordnes til Output.cart, har skriptet ingen effekt. Dette er en nyttig måte å avslutte skript på, for eksempel hvis kunden ikke er kvalifisert til å kjøre skriptet.

Kernel-eksempel

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

Postmetoder

Følgende metoder kan bare brukes i postskript:

Cart

Skriptmetoder som bruker Handlekurv-objektet i postskript
MetodeReturtypeBeskrivelse
.subtotal_price_wasMoneyReturnerer delsummen for handlekurven før eventuelle rabatter ble brukt.
.subtotal_price_changed?BoolskReturnerer hvorvidt delsummen er endret.

Post

Skriptmetoder som bruker Post-objektet i postskript
MetodeReturtypeBeskrivelse
.change_line_price(Money new_price, { message: String }) MoneyEndrer prisen på posten til det angitte beløpet. En message er obligatorisk. new_price må være lavere enn gjeldende pris.
.original_line_priceMoneyReturnerer den opprinnelige prisen på posten før skript og rabatter ble brukt.
.line_price_wasMoneyReturnerer prisen på posten før endringer ble brukt av det gjeldende skriptet.
.line_price_changed?BoolskReturnerer hvorvidt prisen på posten er endret.
.change_properties(hash new_properties, { message: String }) hashAngir nye egenskaper for en post. Den opprinnelige egenskaps-hashen lagres i properties_was, og egenskaps-hashen som sendes til metoden, blir de nye egenskapene for posten.
.properties_washashReturnerer den opprinnelige egenskaps-hashen til posten før eventuelle endringer ble brukt.
.properties_changed?BoolskReturnerer hvorvidt egenskapene for posten er endret.
.split({ take: Integer })PostDeler en post i to poster. take angir hvilket antall som skal fjernes fra den opprinnelige posten for å opprette den nye posten.

.split-eksempel

Dette eksempelskriptet deler en post kalt original_line_item i to poster. Den nye posten har et antall på 1 (angitt av take: 1). Skriptet bruker deretter en rabattert pris på den nye posten med meldingen «Tredje hatt for 5 dollar».

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

Skriptmetoder som bruker Variant-objektet i postskript
MetodeReturtypeBeskrivelse
.compare_at_priceMoneyReturnerer sammenligningsprisen til varianten. Returnerer nil hvis varianten ikke har en sammenligningspris.

Fraktmetoder

Følgende metoder kan brukes i fraktskript:

Inndata

Skriptmetoder som bruker Input-objektet i fraktskript
MetodeReturtypeBeskrivelse
.shipping_ratesFraktprislisteReturnerer en liste over alle fraktprisene.

ShippingRateList

Skriptmetoder som bruker ShippingRateList-objektet i fraktskipt
MetodeReturtypeBeskrivelse
.delete_ifFraktprislisteSlett fraktpriser ved hjelp av en valgfri kodeblokk. Se dokumentasjonen for Rubys delete_if-metode.
.sort!FraktprislisteSorter fraktprisene ved hjelp av sammenligningsoperatoren eller en valgfri kodeblokk. Se dokumentasjonen for Rubys sort!-metode.
.sort_by!FraktprislisteSorter fraktprisene ved hjelp av en valgfri kodeblokk. Se dokumentasjonen for Rubys sort_by!-metode.

ShippingRate

Skriptmetoder som bruker ShippingRate-objektet i fraktskipt
MetodeReturtypeBeskrivelse
.codeStrengReturnerer koden til fraktprisen.
.markupMoneyReturnerer påslaget for en fraktpris, hvis aktuelt.
.nameStrengReturnerer navnet på fraktprisen. Det kan endres ved hjelp av change_name-metoden.
.priceMoneyReturnerer prisen på fraktprisen.
.sourceStrengReturnerer kilden (transportøren) som er knyttet til fraktprisen, hvis relevant. Den kan ikke endres.
.change_name(Streng new_name)Streng Endrer navnet (maksimalt 255 tegn) på fraktprisen. Det er ikke mulig å endre, slette eller skjule kilden.
.apply_discount(Money rabatt, { message: Streng })MoneyBruker en rabatt på det angitte faste beløpet. Prisen kan ikke reduseres til under 0. En melding er påkrevd.
.phone_required?BoolskReturnerer true hvis et telefonnummer er påkrevd for å hente fraktprisen, eller false hvis et telefonnummer ikke er påkrevd.

Betalingsmåter

Følgende metoder kan brukes i betalingsskript:

Inndata

Skriptmetoder som bruker Input-objektet i betalingsskript
MetodeReturtypeBeskrivelse
.payment_gatewaysPaymentGatewaysListReturnerer en liste over alle betalingsgatewayene i butikken.

PaymentGatewayList

Skriptmetoder som bruker PaymentGatewayList-objektet i betalingsskript
MetodeReturtypeBeskrivelse
.delete_ifPaymentGatewayListSlett betalingsgatewayer ved hjelp av en valgfri kodeblokk. Se dokumentasjonen for Rubys delete_if-metode.
.sort!PaymentGatewayListSorter betalingsgatewayene ved hjelp av sammenligningsoperatoren eller en valgfri kodeblokk. Se dokumentasjonen for Rubys sort!-metode.
.sort_by!PaymentGatewayListSorter betalingsgatewayene ved hjelp av en valgfri kodeblokk. Se dokumentasjonen for Rubys sort_by!-metode.

PaymentGateway

MetodeReturtypeBeskrivelse
.nameStrengReturnerer navnet på betalingsgatewayen.
.enabled_card_brandsList<String>

Hvis betalingsgatewayen støtter kredittkort, returneres en liste over kredittkorttypene som butikken godtar. Hvis gatewayen ikke støtter kredittkort, returneres en tom liste.

.change_name(Streng new_name)StrengEndrer navnet på betalingsgatewayen. Betalingsgatewayer med logoer kan ikke gis nytt navn.

Eksempler

I følgende eksempel på et varelinjeskript reduseres prisen på produktet med 9 USD når en kunde bestiller et produkt som ikke er et gavekort. I tillegg vises det totale beløpet kunden har brukt i løpet av alle besøk i butikken din:

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

Finn ut mer

Finn ut mer om: