Kodu çalıştır
Kod çalıştır işlemi, JavaScript kodu yürütür. İş akışının önceki adımlarından gelen verileri Kod çalıştır işlemine girdi olarak aktarabilir ve sonraki adımlarda kullanılacak değerleri döndürebilirsiniz.
Alanlar
Kod çalıştır işlemi aşağıdaki alanları içerir.
Alan | Açıklama |
---|---|
Input | Gerekli. Önceki adımlardan elde edilen verilerin Kod çalıştır eyleminde girdi olarak kullanılmasını sağlayan bir GraphQL sorgusu. |
Çıktı | Gerekli. GraphQL'in şema tanımlama dilinde (SDL) tanımlanan, işlem tarafından döndürülecek verilerin temsili. |
Kod | Gerekli. Kod çalıştır işleminin yürüteceği JavaScript. |
Girdi verileri
Girdi verileri, Kodu çalıştır işleminden önce gerçekleşen adımlardan aktarılabilir. Bu verileri eklemek için Girdi alanına bir GraphQL sorgusu yazabilirsiniz . Sorgudan döndürülen veriler, export default
olarak işaretlenen ve genel kullanımda main
olarak adlandırılan işlevde input
bağımsız değişkeni olarak kullanılabilir.
Girdi sorgusu, Shopify Admin API'ye yönelik bir sorgu değil, Flow ortamı verilerine yönelik bir sorgudur. Bu nedenle giriş verilerine Shopify sorgusu ekleyemezsiniz. Ayrıca, sorgudakiedges
ve nodes
öğelerini Flow yöneteceğinden, sorgunuza bu veya benzeri sayfalandırma söz dizimleri eklemenize gerek yoktur.
Sipariş notunu ve 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 ayrıca işlev imzasında da yapılandırılabilir:
export default function main({order}) {
// order.note
// order.lineItems[0].title
}
Meta alanlar
Kodu çalıştır işleminde meta alan değerlerine tek tek erişmek için öncelikle meta alanı Flow'un ortam verilerine eklemeniz gerekir. Bu, Kodu çalıştır dışındaki herhangi bir işlemde veya koşulda yapılabilir. Örneğin, bir Çıktıyı günlüğe kaydetme işlemi ekleyebilir ve meta alan ekleme talimatlarını uygulayabilirsiniz.
İş akışı ortamına bir meta alan eklendikten sonra, Kodu çalıştır işleminde bu meta alana erişebilirsiniz. Örneğin giftMessage
takma adıyla bir Sipariş meta alanı eklediğinizi varsayalım. Ardından, giriş sorgunuzda bu alana erişebilirsiniz:
{
order {
giftMessage {
value
}
}
}
Çıktı verileri
Kod çalıştır işlemi özel veriler de döndürebilir. Kodun geri 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. Gerekli alanların, listelerin ve özel verilerin nasıl belirtileceğine ilişkin SDL özelliklerine uyan ve desteklenen çıktı türleri şunlardır: String
, Int
, Float
, Boolean
ve ID
.
Örneğin giftMessage
adlı bir dize ve totalGifts
adlı bir sayı 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ı arabiriminde verileri açıklamak için kullanılır. JavaScript kodunda bu verilerin çıktısını almak için tür ile eşleşen bir nesne döndürün:
export default function main(input) {
// your code
return {
giftMessage: 'Hello',
totalGifts: 1,
};
}
Ayrıca, daha karmaşık veriler döndürmek için özel bir tür de tanımlayabilirsiniz. Örneğin, Gift
adlı bir dize ve message
adlı bir sayı içeren amount
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 işlemi takip eden adımlarda bu verilere erişmek için, Kod çalıştır işlem konfigürasyonunda tanımladığınız Output
şemasına göre türü belirlenecek olan Kod çalıştır adlı değişkeni kullanın. Bu değişkeni hem koşullarda hem de işlemlerde kullanabilirsiniz.
Console.log
Hata giderme amacıyla Flow'un iş akışı çalıştırma günlüğüne veri çıktısı almak için console.log
öğesini kullanabilirsiniz. Çıktı, iş akışının Çalıştırma günlüğünde görünür. Ö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,
};
}
Kodu çalıştır işleminde console.info
, console.error
veya diğer işlevleri kullanamazsınız.
Örnek
Kod çalıştır işleminin örneklerini, Flow örnekleri deposunda bulabilirsiniz.
Sınırlamalar
Kod çalıştır işlemi, aşağıdaki sınırlamalara sahiptir:
- Kodu çalıştır işlemi, ECMA2020 JavaScript'i destekler. NodeJS veya CommonJS API'lerini veya modülleri içe aktarma işlemini desteklemez.
- Kodunuz http çağrıları (
fetch
) yapamaz. - Rastgele ve saate dayalı işlevler kullanılamaz.
scheduledAt
veyacreatedAt
gibi tarih verileri, girdi olarak aktarılabilir. - Console.log, tarayıcı konsolunda günlük tutmaz.
- Meta alan takma adlarını doğrudan Kodu çalıştır işlemine ekleyemezsiniz. Bunu nasıl yapacağınızı öğrenmek için meta alanlar bölümünü gözden geçirin.
Ayrıca aşağıdaki sınırlar da uygulanır:
- Girdi verileri sorgusu 5000 karakterle sınırlıdır.
- Çıktı verileri şeması 5000 karakterle sınırlıdır.
- Çıktı veri yükü ve Console.log çıktısı bir arada 50 kb ile sınırlıdır.
- Kod 50.000 karakterden uzun olamaz.
- Toplam yürütme süresi 5 saniyeyle sınırlıdır.
- Bellek kullanımı 10 MB ile sınırlıdır.
Yol haritası
Flow ekibi, Kod çalıştır işlemine zaman içinde yeni özellikler eklemeyi planlamaktadır. Aşağıdaki tabloda, iyileştirmeler ve tahmini sunum zamanları ana hatlarıyla açıklanmıştır.
İyileştirme | Açıklama | Tahmini Sunum Zamanı |
---|---|---|
Günlük kaydı | "Console.log"u kullanarak hata giderme amacıyla Çalıştırma günlüğüne veri çıktısı alma. | Sunuldu. |
Harici API çağrıları | API çağrıları için JavaScript'in alma özelliğini kullanma. | 2025 1. Çeyrek |
Şablonlar
Yeni siparişlere ücretsiz (%100 indirimli) ürün ekleme
Bu şablon, yeni siparişlere stokta varsa ücretsiz ve indirimli bir ürün ekler. Envanteri kontrol eder, %100 indirim uygular ve müşteriye bildirim göndermeden siparişi günceller. Bu otomasyon (1) siparişlerine sürpriz ücretsiz bir ürün ekleyerek müşteri memnuniyetini artırmak, (2) yeni veya daha az bilinen ürünleri siparişlere ücretsiz numune olarak ekleyerek tanıtmak veya (3) ücretsiz ürünleri ekleme ve indirim uygulama işlemini otomatik hale getirerek promosyonları kolaylaştırmak için yararlı olacaktır. Şablonu görüntüleyin
Etkin olmayan iadeleri iptal etme
Belirli bir süre içinde para iadesi yapılmamış veya stoka geri eklenmemiş iadeleri otomatik olarak iptal edin. Şablonu görüntüleyin
Ön eki olan etiketleri Kodu çalıştır işlemini kullanarak ürün meta alanına dönüştürme
Bu iş akışı, 'renk:' gibi bir ön ekle başlayan etiketleri alır ve bir ürün meta alanı listesine ekler. Meta alan listesindeki etiketleri ve mevcut öğeleri ayrıştırmak için Kodu çalıştır işlemini 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üleyin
Müşteri bir ürünün birden fazla varyasyonunu sipariş ettiğinde bildirim gönderme
Bir müşteri aynı ürünün birden fazla varyasyonunu sipariş ettiğinde e-posta bildirimi alın. Şablonu görüntüleyin
Sipariş bir paket içerdiğinde bildirim gönderme
Bu iş akışı, bir sipariş oluşturulduğunda başlatılır ve siparişte yer alan ürünlerden herhangi birinin bir paketin parçası olarak mı satın alındığını kontrol eder. Bulunursa paket ayrıntılarını içeren dahili bir e-posta gönderilir. Bu iş akışını ayrıca, bir sipariş içerisinde bir paketin varlığının tespit edilmesi gereken herhangi bir kullanım durumu için başlangıç noktası olarak da kullanabilirsiniz. Şablonu görüntüleyin
Siparişleri, ilişkili UTM kampanyasıyla etiketleme
Siparişlere, ilişkili UTM kampanyalarının adlarını içeren etiketler ekler. Şablonu görüntüleyin