Изпълнение на код
Действието „Изпълнение на код“ изпълнява JavaScript. Можете да предавате данни от предишни стъпки в работния процес като входни данни към действието „Изпълнение на код“ и да връщате стойности, които да се използват в следващи стъпки.
На тази страница
Полета
Действието „Изпълнение на код“ съдържа следните полета.
| Поле | Описание |
|---|---|
| Входни данни | Задължително. GraphQL заявка за използване на данни от предишни стъпки като входни данни за действието „Изпълнение на код“. |
| Изходни данни | Задължително. Представяне на данните, които трябва да бъдат върнати от действието, дефинирано в езика за дефиниране на схеми на GraphQL (SDL). |
| Код | Задължително. 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. Това може да се направи във всяко действие или условие, различно от „Изпълнение на код“. Например можете да добавите действие „Регистриране на изходни данни“ и след това да следвате инструкциите за добавяне на метаполе.
След като метаполе бъде добавено към средата на работния процес, можете да получите достъп до него в „Изпълнение на код“. Например, ако приемем, че сте добавили метаполе за поръчка с псевдоним giftMessage. След това можете да получите достъп до него във Вашата входна заявка:
{
order {
giftMessage {
value
}
}
}Изходни данни
Действието „Изпълнение на код“ може да връща персонализирани данни. За да дефинирате типа на данните, които кодът ще върне, използвайте полето „Изход“ и езика за дефиниране на схеми (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!
}За достъп до тези данни в стъпките, които следват това действие, използвайте променливата с име „Изпълнение на код“, която ще бъде типизирана съгласно схемата Output, която дефинирате в конфигурацията на действието „Изпълнение на код“. Можете да използвате тази променлива както в условия, така и в действия.
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,
};
}Не можете да използвате console.info, console.error или други функции в действието „Изпълнение на код“.
Пример
Примери за действието с код могат да бъдат намерени в хранилището с примери за Flow.
Ограничения
Действието „Изпълнение на код“ има следните ограничения:
- Действието „Изпълнение на код“ поддържа ECMA2020 JavaScript. То не поддържа API на NodeJS или CommonJS, нито импортиране на модули.
- Вашият код не може да прави HTTP повиквания (
fetch). - Не могат да се използват функции, базирани на произволен принцип и на часовник. Данни за дата, като например
scheduledAtилиcreatedAt, могат да се подават като входни данни. - Console.log не записва в конзолата на браузъра.
- За да се спести от размера на полезния товар, полезният товар на изходните данни връща само променливи, използвани в следващите стъпки.
- Не можете да добавяте псевдоним на метаполе директно в действието „Изпълнение на код“. За да постигнете това, прегледайте раздела „Метаполета“ на тази страница.
Освен това се прилагат следните ограничения:
- Заявката за входни данни е ограничена до 5000 знака.
- Схемата за изходни данни е ограничена до 5000 знака.
- Полезният товар на изходните данни и изходът от Console.log са ограничени до общо 50 KB.
- Кодът не може да бъде по-дълъг от 50 000 знака.
- Общата продължителност на изпълнението е ограничена до 5 секунди.
- Използването на памет е ограничено до 10 MB.
Шаблони
Добавяне на безплатен артикул (със 100% отстъпка) към нови поръчки
Този шаблон добавя безплатен артикул с отстъпка към нови поръчки, когато артикулът е в наличност. Той проверява наличността, прилага 100% отстъпка и актуализира поръчката, без да уведомява клиента. Този работен процес може да помогне за добавяне на автоматизация към следните сценарии:
- Подобряване на удовлетвореността на клиентите чрез включване на безплатен артикул изненада в поръчката им.
- Популяризиране на нови или по-малко известни продукти чрез добавянето им като безплатни мостри в поръчки.
- Оптимизиране на промоциите чрез автоматизиране на включването и прилагането на отстъпка за безплатни артикули.
Анулиране на неактивни връщания
Автоматично анулира връщане, за което не е възстановена сумата или което не е върнато в наличност в рамките на определен период от време. Преглед на шаблона
Конвертиране на тагове с префикс в метаполе на продукт с помощта на действието „Изпълнение на код“
Този работен процес взема тагове, които започват с префикс, като например 'color:', и ги добавя към списък с метаполета на продукта. Той използва действието „Изпълнение на код“, за да анализира таговете и съществуващите артикули в списъка с метаполета. Работният процес се изпълнява, когато се създаде продукт, но може да се изпълни и ръчно за съществуващи продукти. Преглед на шаблона
Изпращане на известие, когато клиент поръча няколко варианта на даден продукт
Получавайте известие по имейл, когато клиент поръча няколко варианта на един и същ продукт. Преглед на шаблона
Изпращане на известие, когато поръчката съдържа пакет
Този работен процес започва, когато се създаде поръчка, и проверява дали някой от продуктите в нея е закупен като част от пакет. Ако бъде открит такъв, се изпраща вътрешен имейл с подробности за пакета. Освен това можете да използвате този работен процес като отправна точка за всеки случай на употреба, който изисква откриване на наличието на пакет в дадена поръчка. Преглед на шаблона
Етикетиране на поръчки със свързана UTM кампания
Добавя тагове към поръчки, които съдържат имената на всички свързани UTM кампании. Преглед на шаблона