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.

Kod çalıştır işleminde kullanılan alanlar.
AlanAçıklama
InputGerekli. Ö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.
KodGerekli. 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 veya createdAt 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.

Kod çalıştır işlemine yönelik iyileştirmeler için yol haritası
İyileştirmeAçıklamaTahmini 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

Aradığınız cevapları bulamıyor musunuz? Yardımcı olmak için buradayız.