Функции для обработки и форматирования данных
Возможность применения функции к параметру зависит от типа данных параметра. Подробнее о типах в статье.
Функции для строк
- ToUpper(строка) — сделать заглавными буквами:
${Recipient.OnlyStandardFirstName} → Алексей
${ToUpper(Recipient.OnlyStandardFirstName)} → АЛЕКСЕЙ
- ToLower(строка) — сделать строчными буквами:
${item.CustomField.Colour} → Красный
${ToLower(item.CustomField.Colour)} → красный
- Capitalize(строка) — делает заглавной первую букву в строке:
${item.Description} → чёрный широкий пояс
${Capitalize(item.Description)} → Чёрный широкий пояс
Важно: функция преобразует только первую букву. Остальные буквы не меняются, даже если в середине слова будет заглавный символ. Регулировать все буквы можно сочетанием функций ToLower (делает все символы строчными) и CapitalizeAllWords (первые символы — заглавные). Обратите внимание на порядок применения функций в примере:
${Recipient.OnlyStandardFirstName} → мАриЯ
${Capitalize(ToLower(Recipient.OnlyStandardFirstName))} → Мария
- CapitalizeAllWords(строка) — делает заглавной первую букву в каждом слове в строке:
${item.Description} → чёрный широкий пояс
${CapitalizeAllWords(item.Description)} → Чёрный Широкий Пояс
Важно: функция преобразует только первую букву. Остальные буквы не меняются, даже если в середине слова будет заглавный символ. Регулировать все буквы можно сочетанием функций ToLower (делает все символы строчными) и Capitalize (первый символ — заглавный). Обратите внимание на порядок применения функций в примере:
${item.Description} → фарфоровая КРУЖКА
${CapitalizeAllWords(ToLower(item.Description))} → Фарфоровая Кружка
- ReplaceIfEmpty(строка1, строка2) — вывести строку 1, если она не пустая, иначе строку 2:
${Recipient.OnlyStandardFirstName} → "" (строка пустая)
${Recipient.CustomField.Nickname} → CoolGuy93
${ReplaceIfEmpty(Recipient.OnlyStandardFirstName, Recipient.CustomField.Nickname)} → CoolGuy93
- IsEmpty(строка) — проверяет, является ли строка пустой):
${Recipient.OnlyStandardFirstName} → Алексей
${IsEmpty(Recipient.OnlyStandardFirstName)} → false
- Length(строка) — посчитать количество символов параметра, возвращает целое число:
${Recipient.LastName} → Петров
${Length(Recipient.LastName)} → 6
- Truncate(строка, количество символов) — интеллектуально обрезать строку до указанного количества символов и добавить многоточие в конце. Многоточие входит в количество символов:
${item.Description} → описание товара
${Truncate(item.Description, 10)} → описани...
Чтобы убрать фиксированное количество символов с конца строки, используем в дополнение функцию Length. Убирается N символов с конца + три символа заменяется на многоточие. Например, обрезаем последние семь символов:
${item.Description} → Кольцо с рубином №12345
${Truncate(item.Description, Length(item.Description) - 4)} → Кольцо с рубином...
- Substring(строка, индекс начала подстроки, длина подстроки (опционально)) — получить подстроку с указанного места и указанной длины (либо до конца строки, если третий параметр не указан):
${Recipient.LastReceivedPromoCode.WithTypeUnique.Value} → BGDK4444
${Substring(Recipient.LastReceivedPromoCode.WithTypeUnique.Value, 1, 4)} → BGDK
Важно: при использовании параметра длины строки, значение преобразуемой строки должно быть не меньше указанной длины, иначе функция упадет с ошибкой:
${Recipient.LastReceivedPromoCode.WithTypeUnique.Value} → BGDK4444
${Substring(Recipient.LastReceivedPromoCode.WithTypeUnique.Value, 1, 9)} → ошибка
Чтобы убрать фиксированное количество символов с конца строки, используем в дополнение функцию Length.
Например, обрезать последние четыре символа:
${Recipient.LastReceivedPromoCode.WithTypeUnique.Value} → ABCDE1234
${Substring(Recipient.LastReceivedPromoCode.WithTypeUnique.Value, 1, Length(Recipient.LastReceivedPromoCode.WithTypeUnique.Value) - 4)} → ABCDE
Вывести только последние четыре символа:
${Substring(Recipient.LastReceivedPromoCode.WithTypeUnique.Value, Length(Recipient.LastReceivedPromoCode.WithTypeUnique.Value) - 3)} → 1234
- ChooseRandomText(произвольное число строк, но не меньше одной) — выбирает случайным образом строку из списка параметров:
${ChooseRandomText("text1", "text2", "text3")} → text2
Функции для чисел
- FormatDecimal(число, формат) — форматировать число:
${balance} → 20000.12
${FormatDecimal(balance, 'N0')} → 20 000
${FormatDecimal(balance, 'N1')} → 20 000,1
${FormatDecimal(balance, 'N2')} → 20 000,12
Использует математическое округление:
${balance} → 100.3
${FormatDecimal(balance, 'N0')} → 100
${balance} → 100.5
${FormatDecimal(balance, 'N0')} → 101
${balance} → 100.78
${FormatDecimal(balance, 'N1')} → 100,8
Важно. Функция возвращает число в виде строки. Поэтому при использовании её в паре с другой числовой функцией нужно для каждой указать неотформатированный параметр.
Пример:
${balance} → 20000.12
${FormatDecimal (balance, 'N0')} → 20 000
${Forms(balance, "бонус", "бонуса", "бонусов")} → бонусов
Вместе:
${FormatDecimal(balance, 'N0')}${Forms(balance, "бонус", "бонуса", "бонусов")} → 20 000 бонусов
- Forms(число, форма1, форма2, форма3) — вывести нужную форму слова в зависимости от числа. Порядок записи форм: как пишется слово после чисел 1, 2 и 5 соответственно:
${Recipient.CustomField.Age} → 30
${Forms(Recipient.CustomField.Age, "год", "года", "лет")} → лет
- AppendForms(число, форма1, форма2, форма3) — вывести число и нужную форму слова в зависимости от числа через пробел. Порядок записи форм: как пишется слово после чисел 1, 2 и 5 соответственно:
${Recipient.CustomField.Age} → 30
${AppendForms(Recipient.CustomField.Age, "год", "года", "лет")} → 30 лет
- Floor(число) — получить максимальное целое число, не превосходящее параметр.
${balance} → 10.9
${Floor(balance)} → 10
Округлить до ближайшего большего целого
- Ceiling(число) — получить наименьшее целое, большее или равное параметру. Например, ceiling(10.6) вернет 11.
${balance} → 10.1
${Ceiling(balance)} → 11
- GetRandomNumber(число, число) — возвращает целое число из указанного интервала, первое число включительно:
${GetRandomNumber(1, 10) } вернёт случайное число от 1 по 9
Функции для даты и времени
- FormatDateTime(дата, формат) — форматировать дату и время:
${CustomerAction.DateTimeMoscow} → 14.12.2018 10:30:00
${FormatDateTime(CustomerAction.DateTimeMoscow, "d")} → 14.12.2018
Подробнее в статьях по стандартным и настраиваемым форматам.
- ToUnixTimeStamp(дата) — конвертировать дату в формат Unix Time Stamp:
${Order.DateTime} → 12.03.2024 15:00:00
(На проекте с часовым поясом UTC+3:00)
${ToUnixTimeStamp(Order.DateTime)} → 1710255600
Можно вычислить количество дней между датами:
${Recipient.CustomField.Date1} → 07.03.2024 00:00:00
${Recipient.CustomField.Date2} → 12.03.2024 00:00:00
${(ToUnixTimeStamp(Recipient.CustomField.Date2)-ToUnixTimeStamp(Recipient.CustomField.Date1)) / 86400} → 5
${(ToUnixTimeStamp(Recipient.CustomField.Date1)-ToUnixTimeStamp(Recipient.CustomField.Date2)) / 86400} → -5
Можно вычислить количество часов между датами:
${Recipient.CustomField.Date1} → 12.03.2024 12:00:00
${Recipient.CustomField.Date2} → 12.03.2024 22:00:00
${(ToUnixTimeStamp(Recipient.CustomField.Date2)-ToUnixTimeStamp(Recipient.CustomField.Date1)) / 3600} → 10
${(ToUnixTimeStamp(Recipient.CustomField.Date1)-ToUnixTimeStamp(Recipient.CustomField.Date2)) / 3600} → -10
- AddDays(дата, число) — сместить дату вперед или назад на N дней и/или часов. Работа с часами возможна только для полей типа «Дата и время»:
${Message.SendingDateTime} → 09.02.2023 15:00:00
${AddDays(Message.SendingDateTime, 7)} → 16.02.2023 15:00:00
${AddDays(Message.SendingDateTime, -7)} → 02.02.2023 15:00:00
${AddDays(Message.SendingDateTime, 1/24)} → 09.02.2023 16:00:00
${AddDays(Message.SendingDateTime, -1/24)} → 09.02.2023 14:00:00
${AddDays(Message.SendingDateTime, 25/24)} → 10.02.2023 16:00:00
Можно использовать вместе с функцией форматирования:
${Formatdatetime(Recipient.BirthDate, "dd/MM") } → 10.03
${Formatdatetime(AddDays(Recipient.BirthDate, 5), "dd/MM") } → 15.03
${Formatdatetime(AddDays(Recipient.BirthDate, -5), "dd/MM") } →; 05.03
- GetDay(дата) — возвращает день из даты в виде числа; можно совершать с ним арифметические операции:
${Recipient.BirthDate} → 10.03.1993 0:00:00
${GetDay(Recipient.BirthDate)} → 10
- GetMonth(дата) — возвращает месяц из даты в виде числа; можно совершать с ним арифметические операции:
${Recipient.BirthDate} → 10.03.1993 0:00:00
${GetMonth(Recipient.BirthDate)} → 3
- GetYear(дата) — возвращает год из даты в виде числа; можно совершать с ним арифметические операции:
${Recipient.BirthDate} → 10.03.1993 0:00:00
${GetYear(Recipient.BirthDate)} → 1993
Функции для коллекций
-
TableRows(Коллекция, число колонок) — преобразовать коллекцию чего-либо в набор строк с ячейками, чтобы по ним было удобно построить HTML-таблицу. Подробнее в статье.
-
Count(коллекция) — получить число элементов в коллекции/списке:
${Count(Order.Purchases)} → 5 (в заказе пять покупок)
- коллекция.Take(N) — возвращает первые N элементов коллекции:
FilteredProducts.Novinki.All.Products.Take(3) → коллекция из максимум трёх товаров
Функции для логических полей (да/нет)
- If(условие, строка1, строка2) — вывести строку 1, если условие выполняется, иначе строку 2:
${Order.CustomField.FreeShipping} → true
${If(Order.CustomField.FreeShipping, "бесплатно", "200 руб.")} → бесплатно
Функции для картинок
- ResizeImage(ссылка, ширина, высота) — функция для масштабирования картинок. Можно проверить в тестовых письмах, так как масштабирование происходит при формировании письма:
<img src="${ResizeImage(PictureUrl, 200, 100)}">
Изменение размеров происходит таким образом, что итоговая картинка вписывается в обозначенные границы.
При этом:
- картинка не обрезается
- соотношение ширины и высоты не меняется
Доступно только в Email- и WebPush-каналах.
Функции хеширования
- MD5(Строка) – хеширование с алгоритмом MD5.
${ MD5(Recipient.Email) }
- SHA1(Строка) – хеширование с алгоритмом SHA1.
${ SHA1(Recipient.Email) }
- SHA256(Строка) – хеширование с алгоритмом SHA256.
${ SHA256(Recipient.Email) }
- SHA512(Строка) – хеширование с алгоритмом SHA512.
${ SHA512(Recipient.Email) }
Если вы хотите зашифровать произвольное значение, то его нужно поместить в кавычки таким образом.
${ MD5(“mindbox”) }
Функции хеширования могут использоваться для подставления тикетов идентификации или авторизации, которые поддерживает сайт, в емейл-рассылки.
- toBase64(Строка) – кодирование с алгоритмом Base64.
${ toBase64(Recipient.Email) }
Функции для кода
- processHtml(аргумент) — отслеживает клики в блоке html.
${ processHtml('<a href="https...">Hi</a>')}
→ Hi
Обратите внимание: код обрамляем одинарными кавычками, чтобы избежать конфликта с двойными кавычками в самом коде, не прибегая к экранированию.
Также можно сохранить нужный код в описание продукта и вывести его с помощью параметра:
${ processHtml(Products.SearchInIdentity("c1").GetByValue("2134").Description)}
Особенности:
- код в блоке не должен содержать параметры (не путать с выводом всего блока через параметр, как в примере с описанием продукта);
- можно использовать несколько блоков в одном письме — будет разбивка кликов по каждому блоку;
- клики выдаются в карточке клиента, utm-метки есть;
- клики не попадают в отчеты и тепловую карту.