API-referanse for Shopify Scripts

Skript er skrevet med en Ruby API som gir deg en god del kontroll og fleksibilitet.

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

Varelinjeskript

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

Varelinjeskript som rabatterer et abonnement gjelder bare for den første betalingen av abonnementet. Påfølgende betalinger rabatteres ikke av skriptet.

Noen metoder kan bare brukes på varelinjeskript.

Fraktskript

Fraktskript samhandler med frakt, og kan endre fraktmetoder og legge til rabatter på fraktpriser. Disse skriptene kjører når betalingsprosessen kommer til siden med leveringsalternativer.

Fraktskript som rabatterer fraktsatsen for et abonnement gjelder bare for den første betalingen i et abonnement. Påfølgende betalinger rabatteres ikke av skriptet.

Noen metoder kan bare brukes i leveringsskript.

Betalingsskript

Betalingsskriptene samhandler med betalinger og kan gi nytt navn og skjule og endre rekkefølge på betalingsgatewayer. Merk at betalingsskript ikke samhandler med betalingsgatewayer som vises før betalingsskjermen, for eksempel Apple Pay. Disse skriptene kjøres når kunden kommer til betalingssiden.

Noen metoder kan bare brukes i betalingsskript.

Generelle metoder

Følgende metoder kan brukes i alle skripttyper:

Overtre

Inndatametoder for skript
MetodeReturtypeBeskrivelse
.cartHandlekurvReturnerer et foranderlig handlekurvobjekt.
.localestrengReturnerer kundens nasjonale innstilling. For eksempel, en, fr eller pt-BR .

Handlekurv

Handlekurvobjektet er kun tilgjengelig i nettbutikken. Noen forlatte kasser har tilgang til handlekurvobjektet. Men dersom en kasse har blitt lukket og en kunde deretter besøker den forlatte kassen, sender den kunden til den forhåndsutfylte kassen, og handlekurvobjektet finnes da ikke lenger. Dette er fordi utstillingsvinduet har blitt forbigått av e-posten for forlatt kasse.

Skriptmetoder med handlekurvobjektet
MetodeReturtypeBeskrivelse
.customerKundeReturnerer eieren av handlekurven (hvis det er noen).
.shipping_addressLeveringsadresseReturnerer leveringsadressen til eieren av handlekurven (hvis det er noen).
.discount_codevarierer Returnerer:

discount_code er til stede hvis en rabatt har blitt brukt i handlekurven. Dette betyr ikke nødvendigvis at prisen på handlekurven endres. For eksempel: Dersom en rabatt gjelder for handlekurver med totalbeløp på over 50 dollar og et skript reduserer handlekurvprisen til under 50 dollar, vil discount_code fortsatt gjelde, men prisen på handlekurven endres ikke.

Se et eksempel på discount_code.

.line_items List<LineItem>Returnerer en liste som inneholder linjevarene i handlekurven.
.presentment_currency List<String>Returnerer kundens lokale (presentasjons-) valuta (i ISO 4217-format). For eksempel USD.
.subtotal_pricePengerReturnerer delsummen for handlekurven etter at det legges til rabatter på varelinjer, men før det legges til rabattkoder.
.total_weightgramReturnerer den totale vekten til alle varelinjene i handlekurven.

CartDiscount::FixedAmount

Skriptmetoder med CartDiscount:: FixedAmount-objekt
MetodeReturtypeBeskrivelse
.codeStrengReturnerer rabattkoden som brukes til å legge til rabatten.
.amountPengerReturnerer pengebeløpet til rabatten.
.reject({ message: String })nilAvviser rabattkoden som er brukt i handlekurven. En melding er påkrevet.
.rejected?BoolskReturnerer om rabattkoden ble avvist.

CartDiscount::Percentage

Skriptmetoder som bruker CartDiscount::Percentage-objekt
MetodeReturtypeBeskrivelse
.codeStrengReturnerer rabattkoden som brukes til å legge til rabatten.
.percentageDesimalReturnerer prosentbeløpet av rabatten.
.reject({ message: String })nilAvviser rabattkoden som er brukt i handlekurven. En melding er påkrevet.
.rejected?BoolskReturnerer om rabattkoden ble avvist.

CartDiscount::Shipping

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

Kunde

Skriptmetoder som bruker kundeobjektet
MetodeReturtypeBeskrivelse
.idHeltallReturnerer kundens ID-nummer.
.emailStrengReturnerer kundens e-postadresse.
.tags List<Tag>Returnerer en liste over strenger som representerer enhver tagg som er angitt for en kunde.
.orders_countHeltallReturnerer totalt antall bestillinger en kunde har lagt inn.
.total_spentPengerReturnerer det totale beløpet kunden har brukt på alle bestillinger.
.accepts_marketing?BoolskReturnerer om kunden godtar markedsføring.

LineItem

<tdgrams
Skript metoder som bruker LineItem-objektet
MetodeReturtypeBeskrivelse
.gramsReturnerer totalvekten til varelinjen.
.line_pricePengerPrisen på linjevaren.
.discounted?BoolskReturnerer hvorvidt prisen på en varelinje er rabattert av et skript eller av en manuell rabatt. Bruken av rabattkoder påvirker ikke returverdien.
.propertieshashReturnerer egenskapene som ble angitt for denne varelinjen.
.variantVariantReturnerer den spesifikke produktvarianten som representeres av varelinjen.
.quantityHeltallReturnerer antallet for denne varelinjen.
.selling_plan_idHeltallReturnerer ID-en for salgsplanen til varelinjen. Denne metoden er nyttig når butikken selger abonnementer, og du ønsker at skriptet skal oppdage når en produktvariant selges som et abonnement.

Liste

Skriptmetoder som benytter listeobjekt
MetodeReturtypeBeskrivelse
.newListeOppretter et nytt objekt for å representere en liste.
.[]Element eller null

Returnerer elementet i den angitte indeksen.

.&Liste

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

.delete_ifListeSlett elementer med en valgfri kodeblokk. Se dokumentasjonen for Rubys delete_if-metode.
.empty?Boolsk

Returnerer true dersom listen ikke inneholder noen elementer.

.firstElement eller null

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

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

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

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

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

.lastElement eller null

Returnerer det siste elementet eller nil dersom listen er tom.

.lengthint

Returnerer antall elementer i listen.

.sizeint

Alias for lengde.

.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 benytter ShippingAddress-objektet
MetodeReturtypeBeskrivelse
.namestrengReturnerer navnet til personen som er knyttet til leveringsadressen.
.address1strengReturnerer gateadresse-seksjonen av leveringsadressen.
.address2strengReturnerer det valgfrie tilleggsfeltet i gateadressedelen av leveringsadressen.
.phonestrengReturnerer telefonnummeret til leveringsadressen.
.citystrengReturnerer byen til leveringsadressen.
.zipstrengReturnerer postnummeret til leveringsadressen.
.provincestrengReturnerer provins/stat til leveringsadressen.
.province_codestrengReturnerer den forkortede verdien av provins/stat til leveringsadressen.
.country_codestrengReturnerer den forkortede verdien av landet til leveringsadressen.

Penger

Skriptmetoder som bruker pengeobjektet
MetodeReturtypeBeskrivelse
.derived_from_presentment(customer_cents:X)PengerKonverterer et beløp (i cent) fra kundens lokale (presentasjons-)valuta til butikkens valuta. Denne metoden godtar customer_cents-parameteren, som godtar et tall i cent. For eksempel Money.derived_from_presentment(customer_cents: 500).
.newPengerOppretter et nytt objekt for å representere en pris.
.zeroPenger

Oppretter et nytt objekt med en pris på null.

+PengerLegger til to penge-objekter.
PengerTrekker et penge-objekt fra et annet.
*PengerMultipliserer et penge-objekt med et tall.

Pengeeksempler

Money.new(cents: 1000)

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

Money.new(cents: 100) * 50

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

Variant

Skriptmetoder med variant-objektet
MetodeReturtypeBeskrivelse
.idHeltallReturnerer ID-nummeret til varianten.
.pricePengerReturnerer enhetsprisen til varianten.
.productProduktReturnerer det tilknyttede produktet av varianten.
.skus List<String>Returnerer lagerbeholdningsenhetene (SKU-er) til varianten, som ofte brukes til sporing av lagerbeholdning.
.titleStrengReturnerer tittelen til varianten.

Produkt

Skriptmetoder med produktobjektet
MetodeReturtypeBeskrivelse
.idHeltallReturnerer ID-nummeret til produktet.
.gift_card?BoolskReturnerer om produktet er et gavekort.
.tags List<Tag>Returnerer en liste over strenger som representerer taggene som er angitt for dette produktet.
.product_typeStrengEn kategorisering som et produkt kan være tagget med. Brukes vanligvis til filtrering og søking.
.vendorStrengReturnerer selgeren av dette produktet.

Kernel

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

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

Eksempel på Kernel

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

Metoder for varelinje

Følgende metoder er bare brukbare for varelinjeskript:

Handlekurv

Skriptmetoder med handlekurvobjektet i varelinjeskript
MetodeReturtypeBeskrivelse
.subtotal_price_wasPengerReturnerer delsummen for handlekurven før eventuelle rabatter ble lagt til.
.subtotal_price_changed?BoolskReturnerer hvorvidt delsummen har endret seg.

LineItem

Skriptmetoder som bruker LineItem-objektet i varelinjeskript
MetodeReturtypeBeskrivelse
.change_line_price(Money new_price, { message: String }) PengerEndre prisen på varelinjen til det angitte beløpet. En melding er påkrevet. new_price må være lavere enn den nåværende prisen.
.original_line_pricePengerReturnerer den opprinnelige prisen til varelinjen før det ble lagt til skript og rabatter.
.line_price_wasPengerReturnerer prisen på varelinjen før endringene ble lagt til av det gjeldende skriptet.
.line_price_changed?BoolskReturnerer hvorvidt prisen på varelinjen er endret.
.change_properties(hash new_properties, { message: String }) hashAngir nye egenskaper for et linjeelement. Hash-nummeret for de opprinnelige egenskapene er lagret i properties_was, og hashen for egenskaper som sendes til metoden blir de nye egenskapene for varelinjen.
.properties_washashReturnerer hash-nummeret til den opprinnelige egenskapen til varelinjen før det eventuelt ble lagt til endringer.
.properties_changed?BoolskReturnerer hvorvidt egenskapene for varelinjen er endret.
.split({ take: Integer })LineItemDeler et linjeelement i to linjeelementer. take angir hvilken mengde som skal fjernes fra det opprinnelige linjeelementet for å opprette det nye linjeelementet.

eksempel på .split

Dette eksempelskriptet deler et linjeelement som kalles original_line_item inn i to linjeelementer. Det nye linjeelementet har en mengde på 1 (angitt av take: 1). Skriptet bruker deretter en rabattert pris på det nye linjeelementet 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 variantobjektet i varelinjeskript
MetodeReturtypeBeskrivelse
.compare_at_pricePengerReturnerer sammenlign med-prisen for varianten. Returnerer nil hvis varianten ikke har en sammenlign med-pris.

Leveringsmetoder

Følgende metoder kan brukes i leveringsskript:

Overtre

Skriptmetoder som bruker overtre-objektet i leveringsskript
MetodeReturtypeBeskrivelse
.shipping_ratesShippingRateListReturnerer en liste over alle fraktprisene.

ShippingRateList

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

ShippingRate

Skriptmetoder som bruker ShippingRate-objektet i leveringsskript
MetodeReturtypeBeskrivelse
.codeStrengReturnerer koden til fraktprisen.
.markupPengerReturnerer påslaget for en fraktpris, hvis det er aktuelt.
.nameStrengReturnerer navnet på fraktprisen. Den kan endres med metoden change_name .
.pricePengerReturnerer prisen på fraktprisen.
.sourceStrengReturnerer kilden (transportøren) som er knyttet til fraktprisen, hvis det er aktuelt. Den kan ikke endres.
.change_name(String new_name)Streng Endrer navnet (maksimalt 255 tegn) på fraktprisen. Det er ikke mulig å endre, slette eller skjule kilden.
.apply_discount(Money discount, { message: String })PengerLegger til en rabatt på det spesifiserte faste beløpet. Prisen kan ikke reduseres under 0. En melding er obligatorisk.
.phone_required?BoolskReturnerer true dersom et telefonnummer kreves for å få fraktprisen eller false dersom du ikke trenger et telefonnummer.

Betalingsmetoder

Følgende metoder kan brukes i betalingsskript:

Overtre

skriptmetoder som bruker overtre-objektet i betalingsskript
MetodeReturtypeBeskrivelse
.payment_gatewaysPaymentGatewaysListReturnerer en liste over alle betalingsgatewayer i butikken.

PaymentGatewayList

Skriptmetoder som bruker PaymentGatewayList-objektet i betalingsskript
MetodeReturtypeBeskrivelse
.delete_ifPaymentGatewayListSlett betalingsløsninger ved hjelp av en valgfri kodeblokk. Se dokumentasjonen for Rubys delete_if-metode.
.sort!PaymentGatewayListSorter betalingsgatewayene med sammenligningsoperatoren eller bruk 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_brands List<String>

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

.change_name(String new_name)StrengEndrer navnet på betalingsgatewayen. Betalingsgatewayer med logoer kan ikke omdøpes.

Eksempler

I følgende varelinjeskripteksempel, når en kunde bestiller et produkt som ikke er et gavekort, vil prisen på produktet reduseres med 9 dollar. I tillegg vises det totale beløpet kunden har brukt i løpet av alle besøkene i butikken:

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

Les mer

Finn ut mer om:

Finner du ikke svarene du leter etter? Vi er her for å hjelpe deg.