Виконати код

Дія Виконати код виконує код JavaScript. Ви можете передавати дані з попередніх кроків робочого процесу як вхідні дані для дії Виконати код, а також повертати значення для використання в наступних кроках.

Поля

Дія Виконати код містить наведені нижче поля.

Поля, які використовуються в дії «Виконати код».
ПолеОпис
Вхідні даніОбов'язково. Запит GraphQL для використання даних із попередніх кроків як вхідних даних для дії Виконати код.
Вихідні даніОбов'язково. Представлення даних, які має повернути дія, визначене мовою визначення схем (SDL) GraphQL.
КодОбов'язково. Код JavaScript, який виконуватиме дія Виконати код.

Вхідні дані

Вхідні дані можна передати з кроків, що передують дії Виконати код. Щоб включити ці дані, можна написати запит GraphQL у полі Вхідні дані. Дані, повернуті із запиту, будуть доступні як аргумент input для функції, позначеної як export default, яка зазвичай називається main.

Вхідний запит — це запит до даних середовища Flow, а не запит до Shopify Admin API. Тому ви не можете вставити запит Shopify у вхідні дані. Крім того, Flow автоматично обробляє edges та nodes у запиті, тому вам не потрібно додавати їх або інший синтаксис розбиття на сторінки до свого запиту.

Приклад вхідних даних для отримання примітки до замовлення та назви позиції:

{
  order {
    note
    lineItems {
      title
    }
  }
}

Ці дані перетворюються на змінну input, яку можна використовувати в коді:

export default function main(input) {
  // input.order.note
  // input.order.lineItems[0].title
}

Вхідні дані також можна деструктурувати в сигнатурі функції:

export default function main({order}) {
  // order.note
  // order.lineItems[0].title
}

Метаполя

Щоб отримати доступ до окремих значень метаполів у дії «Виконати код», спершу потрібно додати метаполе до даних середовища Flow. Це можна зробити в будь-якій дії чи умові, окрім «Виконати код». Наприклад, ви можете додати дію Виведення в журнал (Log output), а потім виконати інструкції щодо додавання метаполя.

Після додавання метаполя до середовища робочого процесу ви зможете отримати до нього доступ у дії Run code. Наприклад, припустімо, ви додали метаполе замовлення з псевдонімом giftMessage. Тоді ви зможете отримати до нього доступ у своєму вхідному запиті:

{
  order {
    giftMessage {
      value
    }
  }
}

Вихідні дані

Дія Run code може повертати спеціальні дані. Щоб визначити тип даних, які повертатиме код, скористайтеся полем Output і мовою визначення схеми (SDL) GraphQL. Підтримувані типи вихідних даних: String, Int, Float, Boolean та ID. Вони відповідають специфікації SDL щодо вказування обов’язкових полів, списків і спеціальних даних.

Наприклад, щоб повернути рядок із назвою giftMessage і число з назвою totalGifts:

type Output {
  "The message to include in the gift"
  giftMessage: String!
  "The total number of gifts"
  totalGifts: Int!
}

Коментарі не є обов’язковими, але вони використовуватимуться для опису даних в інтерфейсі користувача Flow. Щоб вивести ці дані в коді JavaScript, поверніть об’єкт, який відповідає цьому типу:

export default function main(input) {
  // your code
  return {
    giftMessage: 'Hello',
    totalGifts: 1,
  };
}

Ви також можете визначити спеціальний тип для повернення складніших даних. Наприклад, щоб повернути тип із назвою Gift, який містить рядок із назвою message і число з назвою amount:

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!
}

Щоб отримати доступ до цих даних у кроках, що йдуть після цієї дії, використовуйте змінну з назвою Run code, яка буде типізована відповідно до схеми Output, визначеної вами в конфігурації дії Run code. Ви можете використовувати цю змінну як в умовах, так і в діях.

Console.log

Ви можете використовувати console.log для виведення даних у журнал запуску робочого процесу Flow для усунення несправностей. Вивід відображатиметься в журналі запусків робочого процесу. Наприклад, такі варіанти є допустимими:

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,
  };
}

У дії Run code не можна використовувати console.info, console.error або інші функції.

Приклад

Приклади для дії з кодом можна знайти в репозиторії прикладів Flow.

Обмеження

Дія Run code має такі обмеження:

  • Дія Run code підтримує ECMA2020 JavaScript. Вона не підтримує API NodeJS чи CommonJS, а також імпорт модулів.
  • Ваш код не може здійснювати HTTP-виклики (fetch).
  • Не можна використовувати функції, засновані на випадкових числах або часі. Дані з датами, як-от scheduledAt або createdAt, можна передавати як вхідні дані.
  • Console.log не записує дані в консоль браузера.
  • Для економії обсягу корисного навантаження вихідні дані повертають лише ті змінні, що використовуються в подальших кроках.
  • Ви не можете додати псевдонім метаполя безпосередньо в дії Run code. Щоб зробити це, перегляньте розділ Метаполя на цій сторінці.

Крім того, діють такі обмеження:

  • Запит вхідних даних обмежено 5000 символами.
  • Схему вихідних даних обмежено 5000 символами.
  • Корисне навантаження вихідних даних і вивід Console.log разом обмежено 50 КБ.
  • Код не може бути довшим за 50 000 символів.
  • Загальну тривалість виконання обмежено 5 секундами.
  • Використання пам’яті обмежено 10 МБ.

Шаблони

Додати безкоштовну одиницю (зі знижкою 100%) до нових замовлень

Цей шаблон додає безкоштовну одиницю зі знижкою до нових замовлень, коли ця одиниця є в запасах. Він перевіряє запаси, застосовує знижку 100% і оновлює замовлення, не повідомляючи клієнта. Цей робочий процес може допомогти автоматизувати такі сценарії:

  • Підвищення рівня задоволеності клієнтів шляхом додавання безкоштовної одиниці-сюрпризу до їхнього замовлення.
  • Просування нових або менш відомих товарів шляхом їх додавання як безкоштовних зразків до замовлень.
  • Оптимізація промоакцій шляхом автоматизації додавання безкоштовних одиниць і застосування до них знижок.

Переглянути шаблон

Скасувати неактивні повернення

Автоматичне скасування повернення, за яке не було відшкодовано кошти або яке не було повернуто в запаси протягом певного періоду часу. Переглянути шаблон

Конвертувати теги з префіксом у метаполе товару за допомогою дії Run code

Цей робочий процес братиме теги, які починаються з префікса, як-от «color:», і додаватиме їх до списку метаполів товару. У ньому використовується дія Run code для аналізу тегів і наявних елементів у списку метаполів. Робочий процес запускається під час створення товару, але його можна запустити вручну для наявних товарів. Переглянути шаблон

Надсилати сповіщення, коли клієнт замовляє кілька варіантів товару

Отримувати сповіщення електронною поштою, коли клієнт замовляє кілька варіантів одного товару. Переглянути шаблон

Надсилати сповіщення, коли замовлення містить комплект

Цей робочий процес починається, коли створюється замовлення, і перевіряє, чи були якісь із товарів у замовленні придбані як частина комплекту. Якщо так, надсилається внутрішній електронний лист із деталями комплекту. Крім того, ви можете використовувати цей робочий процес як відправну точку для будь-якого варіанта використання, який потребує виявлення комплекту в замовленні. Переглянути шаблон

Додавати теги до замовлень із пов'язаною UTM-кампанією

Додає теги до замовлень, які містять назви будь-яких пов’язаних UTM-кампаній. Переглянути шаблон