К содержимому

Документация

TypeScript SDK: Преобразования выгрузок

Откройте выгрузку, выберите обработку кодом и язык TypeScript. Преобразование работает для CSV, JSON, файловых выгрузок и Webhook. Доступные форматы доставки зависят от настроек выгрузки. Код получает сохранённые записи, новый сбор с сайта не запускается.

Каждая запись

Режим «Записи» сохраняет число и порядок элементов. Обновите нужные поля и вызовите emit ровно один раз на каждый входной элемент.

async function run(ctx: Akmelo.Context): Promise<void> {
  for (const item of ctx.param<Akmelo.Row[]>('items', [])) {
    const price = ctx.text().money(item.price_rub);
    ctx.emit({ ...item, price_with_vat: price === null ? null : Math.round(price * 1.2 * 100) / 100 });
  }
}

Набор: фильтрация, сортировка, итоги

Режим «Набор» позволяет менять количество и порядок строк. Для файла и Webhook обрабатывается выборка, для endpoint текущая страница, для предпросмотра первые пять записей.

async function run(ctx: Akmelo.Context): Promise<void> {
  const rows = ctx.param<Akmelo.Row[]>('items', []);
  const priced = rows.map(row => ({ ...row, price: ctx.text().money(row.price_rub) }))
    .filter(row => row.price !== null && row.price > 0)
    .sort((left, right) => (left.price ?? 0) - (right.price ?? 0));
  for (const row of priced) ctx.emit(row);
}

До 10 000 входных записей и 16 МБ для набора, до 30 секунд на вызов. Превышение предела останавливает операцию без скрытого обрезания. Сеть, чтение документов, почты, секретов и хранилищ в преобразовании недоступны: используйте уже собранные данные. Проверка типов не отменяет эти ограничения.

Сначала сохраните код, затем нажмите «Проверить на данных». Ошибка не заменит рабочую версию. При смене языка создаётся отдельный сценарий преобразования, прежние версии сохраняются со своим языком. Два одновременно открытых редактора защищены от перезаписи устаревшей версии.

Среда выполнения · Параметры и результат