Структура вызываемой функции
function runJavascriptCode(a,b,c,d,e) {
'use strict';
let result = null;
//------------------------start your code--------------------
result = a + b + c + d + e;
//--------------------------end your code---------------------
return result;
}
var a = '1';
var b = '2';
var c = '3';
var d = '4';
var e = '5';
console.log(runJavascriptCode(a,b,c,d,e));
Проще всего написать код в удобном вам инструменте – https://www.jdoodle.com/execute-nodejs-online/ или вашей IDE и далее скопировать код в ApiMonster.
Нужен код для секции start your code/end your code.
Примеры кода
Отправка массива данных в качестве вебхука на заданный url.
const fetch = require("sync-fetch");
const response = fetch(" https://webhook.site/4c1a1a1c-abeb-41b2-83e1-ae269fb39713", {
method: "POST",
body: JSON.stringify({
a: a,
b: b,
c: c,
d: d,
e: e
})
});
return response.statusText;
Узнать самый дорогой sku в заказе из озона с учетом количества заказанных товаров.
//check code here - https://www.jdoodle.com/execute-nodejs-online/
function runJavascriptCode(a,b,c,d,e) {
'use strict';
let result = null;
//------------------------start your code--------------------------
//превращаем json в массив
let data = JSON.parse(a);
let maxPrice = 0;
//обходим массив
for(var i in data){
let item = data[i];
//выводим в консоль что в текущем элементе массива чтобы понять какие там данные
//console.log(item);
let price = item.price * item.quantity;
//если цена больше последней максимальной цены, обговляем самый дорогой sku
if (price>maxPrice){
maxPrice = price;
result = item.offer_id;
}
}
//--------------------------end your code--------------------------
return result;
}
var a = '[{ "price": "26890.0000", "offer_id": "stwrOD35", "name": "Оверлок Stoewer OD-35", "sku": 1084950881, "quantity": 1, "mandatory_mark": [], "dimensions": { "height": "323.00", "length": "447.00", "weight": "7550", "width": "365.00" }, "currency_code": "RUB" }, { "price": "6101.0000", "offer_id": "send4bio", "name": "Проточный фильтр под раковину Sendo Aqua 4Bio", "sku": 981820964, "quantity": 1, "mandatory_mark": [], "dimensions": { "height": "425.00", "length": "195.00", "weight": "4400", "width": "410.00" }, "currency_code": "RUB" }]';
var b = '';
var c = '';
var d = '';
var e = '';
console.log(runJavascriptCode(a,b,c,d,e));
Подменить значение поля в массиве согласно маппинга.
function runJavascriptCode(a,b,c,d,e) {
'use strict';
let result = null;
//------------------------start your code--------------------------
//маппинг: артикул wb > артикул rcrm
let map = {
'snd123':'rcrmArticle',
'wbArticle1':'rcrmArticle1',
}
//превращаем json в массив
let order = JSON.parse(a);
//перебираем маппинг
for (let wbArticle in map) {
//если пришел артикул из маппинга, подставляем вариант для rcrm
if (order.hasOwnProperty('article') && order['article'] === wbArticle){
order['article'] = map[wbArticle];
break;
}
}
//возвращаем обновленный массив заказа
result = JSON.stringify(order);
//--------------------------end your code--------------------------
return result;
}
var a = '{"address":null,"deliveryType":"fbs","user":null,"orderUid":"5483976_11741988085208591","article":"snd4bio","rid":"11741988085208591.0.0","createdAt":"2023-11-20T06:33:05Z","offices":["Москва_Запад-Юг"],"skus":["4673744335316"],"id":1213910358,"warehouseId":143195,"nmId":123,"chrtId":264161474,"price":511300,"convertedPrice":511300,"currencyCode":643,"convertedCurrencyCode":643,"cargoType":1,"name":"test"}';
var b = '';
var c = '';
var d = '';
var e = '';
console.log(runJavascriptCode(a,b,c,d,e));
Выгрузка статистики из Яндекс Метрики по utm-меткам, формирование csv для загрузки в google sheets.
//подключем библиотеки
const fetch = require("sync-fetch");
//вспомогательные функции
function createUrl(baseUrl, params) {
let items = [];
for (let key in params) {
items.push(key + "=" + params[key]);
}
return baseUrl + "?" + items.join('&');
}
function createCsv(csvRows) {
return csvRows.join("\r\n");
}
//токены
let token = "AQAAAAAm6eb9AAc4_123456";
//формируем ссылку в api
let dateFrom = "2024-03-01";
let dateTo = "2024-03-31";
let params = {
"id": 82227529,
"metrics": "ym:s:visits,ym:s:users",
"dimensions": "ym:s:UTMSource,ym:s:UTMMedium,ym:s:UTMCampaign,ym:s:UTMContent,ym:s:UTMTerm",
"date1": dateFrom,
"date2": dateTo
};
let baseUrl = "https://api-metrika.yandex.net/stat/v1/data";
let url = createUrl(baseUrl, params);
//делаем запрос в api
let headers = {
'Content-Type': 'application/json;charset=utf-8',
'Authorization': "OAuth " + token
};
let response = fetch(url, {method: "get", "headers": headers});
//если вернулся корректный ответ
if (response.status === 200) {
let data = response.json(); //ответ api
let csvRows = []; //массив строк для будущего csv
//смотрим что вернуло api
// console.log(data);
//рисуем заголовок дашборда
csvRows.push("Отчет по UTM-меткам, период: " + dateFrom + " - " + dateTo);
csvRows.push("");
csvRows.push(data.query.dimensions.join(";") + ';' + data.query.metrics.join(";"))
//рисуем строки дашборда
data.data.forEach(function (item, i, arr) {
let rowData = [];
rowData.push(item.dimensions[0].name);
rowData.push(item.dimensions[1].name);
rowData.push(item.dimensions[2].name);
rowData.push(item.dimensions[3].name);
rowData.push(item.dimensions[4].name);
rowData.push(item.metrics[0]);
rowData.push(item.metrics[1]);
csvRows.push(rowData.join(";"));
});
//делаем csv
let result = createCsv(csvRows);
// смотрим что получилось в csv
// console.log(result);
//возвращаем результат для дальнейших шагов связки
return result;
} else {
//ошибка запроса
}
Парсинг JSON с кавычками в значениях, например “item”:”Соус \”Васаби\””:
function jsonParse(raw){
raw = raw.replace(/\s\"/g,' ');
raw = raw.replace(/\"\s/g,' ');
raw = raw.replace('""','"');
return JSON.parse(raw);
}
Коррекция значения по списку значений из массива с тестированием
function fixName(value){
let chars = ["с.","г."];
let result = value;
if (value.indexOf('с.')==-1){
chars.forEach((char) => {
result = result.replace(char,'');
})
result = result.trim();
result = 'г. ' + result;
}
return result;
}
let cases = ['Актау','с.Актау','г.Актау','г. Актау', 'с. Актау', 'с. Лос Сантос', 'г. Лос Сантос','Лос Сантос'];
cases.forEach((value) => {
console.log(value + " > " + fixName(value));
})
Шаблон разработки функции с тестированием
//требуемая функция
function parseIds(str){
const regex = /\d{4}/gm;
let m;
let matches = [];
while ((m = regex.exec(str)) !== null) {
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
m.forEach((match, groupIndex) => {
matches.push(match);
});
}
return matches.join(',');
}
//тестовые кейсы - что на входе и что ожидается на выходе
let cases = [
{
'value':'Счета на оплату №1233,3243,3443,3434 за выполненные работы',
'result':'1233,3243,3443,3434'
},
{
'value':'Счета на оплату №1233 за выполненные работы',
'result':'1233'
}
];
//тестирование
cases.forEach((c) => {
let result = parseIds(c['value']);
//результат ожидаемый
if (result === c['result']){
console.log(c['value'] + ' - OK')
}
//результат не ожидаемый
else{
console.log(c['value'] + ' - ERROR, result = ' + result + ', ожидалось = ' + c['result'])
}
});