Kod çalıştırma
Kod çalıştır eylemi JavaScript yürütür. İş akışındaki önceki adımlardan gelen verileri Kod çalıştır eylemine girdi olarak aktarabilir ve sonraki adımlarda kullanılacak değerleri döndürebilirsiniz.
Alanlar
Kod çalıştır eylemi aşağıdaki alanları içerir.
| Alan | Açıklama |
|---|---|
| Girdi | Gerekli. Önceki adımlardan gelen verileri Kod çalıştır eylemine girdi olarak kullanmak için kullanılan bir GraphQL sorgusu. |
| Çıktı | Gerekli. GraphQL'in şema tanım dilinde (SDL) tanımlanan, eylem tarafından döndürülecek verilerin bir temsili. |
| Kod | Gerekli. Kod çalıştır eyleminin yürüteceği JavaScript kodu. |
Girdi verileri
Girdi verileri, Kod çalıştır eyleminden önceki adımlardan aktarılabilir. Bu verileri eklemek için Girdi alanına bir GraphQL sorgusu yazabilirsiniz. Sorgudan döndürülen veriler, export default ile işaretlenmiş ve geleneksel olarak main olarak adlandırılan işleve input bağımsız değişkeni olarak sunulur.
Girdi sorgusu, Shopify Admin API'ye yönelik bir sorgu değil, Flow ortam verilerine yönelik bir sorgudur. Bu nedenle girdi verilerine bir Shopify sorgusu ekleyemezsiniz. Ayrıca Flow, sorgudaki edges ve nodes tanıtıcılarını işler. Bu nedenle bunları veya diğer sayfalama söz dizimlerini sorgunuza eklemeniz gerekmez.
Bir sipariş notunu ve bir satır öğesinin başlığını alan örnek bir girdi:
{
order {
note
lineItems {
title
}
}
}Bu veriler, kodda kullanılabilecek bir input değişkenine dönüştürülür:
export default function main(input) {
// input.order.note
// input.order.lineItems[0].title
}Girdiler, işlev imzasında ayrıştırılabilir:
export default function main({order}) {
// order.note
// order.lineItems[0].title
}Meta alanlar
Kod çalıştır'da tekli meta alan değerlerine erişmek için önce meta alanı Flow'un ortam verilerine eklemeniz gerekir. Bu işlem, Kod çalıştır dışındaki herhangi bir eylemde veya koşulda yapılabilir. Örneğin, bir Günlük çıktısı eylemi ekleyebilir ve ardından meta alanı ekleme talimatlarını izleyebilirsiniz.
Bir meta alan, iş akışı ortamına eklendikten sonra, ona Kod çalıştır'da erişebilirsiniz. Örneğin, giftMessage takma adıyla bir Sipariş meta alanı eklediğinizi varsayalım. Ardından, bu meta alana girdi sorgunuzda erişebilirsiniz:
{
order {
giftMessage {
value
}
}
}Çıktı verileri
Kod çalıştır eylemi özel veriler döndürebilir. Kodun döndüreceği verilerin türünü tanımlamak için Çıktı alanını ve GraphQL'in Şema tanımlama dilini (SDL) kullanın. Desteklenen çıktı türleri; gerekli alanların, listelerin ve özel verilerin nasıl belirtileceğine ilişkin SDL belirtimini izleyen String, Int, Float, Boolean ve ID'dir.
Örneğin, giftMessage adlı bir dizeyi ve totalGifts adlı bir sayıyı döndürmek için:
type Output {
"The message to include in the gift"
giftMessage: String!
"The total number of gifts"
totalGifts: Int!
}Yorumlar isteğe bağlıdır ancak Flow kullanıcı arayüzündeki verileri açıklamak için kullanılır. Bu verileri JavaScript kodunda çıktı olarak vermek için türle eşleşen bir nesne döndürün:
export default function main(input) {
// your code
return {
giftMessage: 'Hello',
totalGifts: 1,
};
}Daha karmaşık veriler döndürmek için özel bir tür de tanımlayabilirsiniz. Örneğin, message adlı bir dize ve amount adlı bir sayı içeren Gift adlı bir türü döndürmek için:
type Output {
"The gift to send"
gifts: [Gift!]!
}
type Gift {
"The message to include in the gift"
message: String!
"The total number of gifts"
amount: Int!
}Bu eylemi izleyen adımlarda bu verilere erişmek için Kod çalıştır adlı değişkeni kullanın. Bu değişkenin türü, Kod çalıştır eylemi yapılandırmasında tanımladığınız Çıktı şemasına göre belirlenir. Bu değişkeni hem durumlarda hem de eylemlerde kullanabilirsiniz.
Console.log
Hata giderme amacıyla verileri Flow'un iş akışı çalıştırma günlüğüne yazdırmak için console.log işlevini kullanabilirsiniz. Çıktı, iş akışının Çalıştırma günlüğünde görünür olur. Örneğin aşağıdakiler geçerlidir:
export default function main(input) {
console.log('Hello, world!');
//Hello, world!
console.log(input);
// { order: { note: 'Hello', lineItems: [ { title: 'World' } ] } }
console.log(input.order, 'is the order');
// { note: 'Hello', lineItems: [ { title: 'World' } ] }
// is the order
return {
giftMessage: 'Hello',
totalGifts: 1,
};
}Kod çalıştır eyleminde console.info, console.error veya diğer işlevleri kullanamazsınız.
Örnek
Kod eylemine ilişkin örnekleri Flow örnekleri deposunda bulabilirsiniz.
Sınırlamalar
Kod çalıştır eyleminin aşağıdaki sınırlamaları vardır:
- Kod çalıştır eylemi, ECMA2020 JavaScript'i destekler. NodeJS veya CommonJS API'lerini ya da modül içe aktarmayı desteklemez.
- Kodunuz HTTP çağrıları (
fetch) yapamaz. - Rastgele ve saate dayalı işlevler kullanılamaz.
scheduledAtveyacreatedAtgibi tarih verileri, girdi olarak aktarılabilir. - Console.log, tarayıcı konsoluna günlük kaydı yapmaz.
- Veri yükü boyutundan tasarruf etmek için çıktı veri yükü, yalnızca sonraki adımlarda kullanılan değişkenleri döndürür.
- Kod çalıştır eylemine doğrudan bir meta alan takma adı ekleyemezsiniz. Bunu yapmak için bu sayfadaki Meta Alanlar bölümünü inceleyin.
Ayrıca aşağıdaki sınırlar uygulanır:
- Girdi verisi sorgusu 5.000 karakterle sınırlıdır.
- Çıktı verisi şeması 5.000 karakterle sınırlıdır.
- Çıktı veri yükü ve Console.log çıktısı toplamda 50 KB ile sınırlıdır.
- Kod 50.000 karakterden uzun olamaz.
- Toplam yürütme süresi 5 saniye ile sınırlıdır.
- Bellek kullanımı 10 MB ile sınırlıdır.
Şablonlar
Yeni siparişlere ücretsiz (%100 indirimli) ürün ekleme
Bu şablon, ürün stokta olduğunda yeni siparişlere ücretsiz, indirimli bir ürün ekler. Şablon; envanteri kontrol eder, %100 indirim uygular ve müşteriyi bilgilendirmeden siparişi günceller. Bu iş akışı, aşağıdaki senaryolara otomasyon eklemenize yardımcı olabilir:
- Siparişlerine sürpriz bir ücretsiz ürün ekleyerek müşteri memnuniyetini artırın.
- Yeni veya daha az bilinen ürünleri siparişlere ücretsiz numune olarak ekleyerek tanıtın.
- Ücretsiz ürünlerin eklenmesini ve indirimli hale getirilmesini otomatikleştirerek promosyonları kolaylaştırın.
Etkin olmayan iadeleri iptal etme
Belirli bir süre içinde para iadesi yapılmamış veya stoka geri eklenmemiş bir iadeyi otomatik olarak iptal eder. Şablonu görüntüle
Kod çalıştır eylemini kullanarak ön ekli etiketleri bir ürün meta alanına dönüştürme
Bu iş akışı, 'color:' gibi bir ön ekle başlayan etiketleri alır ve bunları bir ürün meta alan listesine ekler. Etiketleri ve meta alan listesindeki mevcut öğeleri ayrıştırmak için Kod çalıştır eylemini kullanır. İş akışı, bir ürün oluşturulduğunda çalışır ancak mevcut ürünlerde manuel olarak da çalıştırılabilir. Şablonu görüntüle
Bir müşteri, bir ürünün birden çok varyasyonunu sipariş ettiğinde bildirim gönderme
Bir müşteri aynı ürünün birden çok varyasyonunu sipariş ettiğinde e-posta bildirimi alın. Şablonu görüntüle
Sipariş bir paket içerdiğinde bildirim gönderme
Bu iş akışı, bir sipariş oluşturulduğunda başlar ve siparişteki ürünlerden herhangi birinin bir paket kapsamında satın alınıp alınmadığını kontrol eder. Böyle bir ürün bulunursa paket ayrıntılarını içeren dahili bir e-posta gönderilir. Ayrıca bu iş akışını, bir sipariş içinde paket varlığını algılaması gereken tüm kullanım senaryoları için başlangıç noktası olarak kullanabilirsiniz. Şablonu görüntüle
Siparişleri ilişkili UTM kampanyasıyla etiketleme
İlişkili UTM kampanyalarının adlarını kullanarak siparişlere etiketler ekler. Şablonu görüntüle