Создайте формулу внутри массива после сценария приложения фильтра google sheet

#google-apps-script #google-sheets #binance #binance-api-client

Вопрос:

Я пытаюсь создать формулу внутри массива после отфильтровать этот массив, мой массив как-нибудь, не дай мне цене, а иногда и не дать мне полную цену: мне нужно, если цена в массив 0.0 хочу изменить это, чтобы TotalPrice/кол-во, как первый массив 600/20=30 , Цена 30. и во втором массиве это мой код : TotalPrice это сделать 0.0 кол-воцена=TotalPrice : 1020=200 , тебя TotalPrice является 200 .

Мне нужен такой вывод:

 [{Qty:20, Price:30, TotalPrice:600}, {Qty:10, Price:20, TotalPrice:200}, 
     {Qty:5, Price:100, TotalPrice:500}]
 

А затем я положил его на лист с помощью этого кода:

 sh.getRange(5,5,oA.length, oA[0].length).setValues(oA);
 

Спасибо.

 function arrayFormula() {
   const data = '[{"Qty":"20", "Price":"0.0", "TotalPrice":"600"}, {"Qty":"10", "Price":"20", 
     "TotalPrice":"0.0"}, {"Qty":"5", "Price":"100", "TotalPrice":"500"}]';
   
   Logger.log("Array: "  data);
   const obj = JSON.parse(data);
   const ss = SpreadsheetApp.getActive();

   const oA = obj.map(obj => [obj.Qty, obj.Price,obj.TotalPrice]);

   // put array return to sheet
   //sh.getRange(5,5,oA.length, oA[0].length).setValues(oA);


  var filtered = oA.filter(function (el) {
     if (el[1]!=0) {
       return obj.Total/obj.Qty; 
     } else {
       return false 
     }
  });

 console.log("Array After Filter: "   filtered);

 }
 

Верни меня :

 1:16:27 PM  Info    Array: [{"Qty":"20", "Price":"0.0", "Total":"600"}, {"Qty":"10", 
                           "Price":"20", "Total":"0.0"}, {"Qty":"5", "Price":"100", 
                           "Total":"500"}]
1:16:27 PM  Info    Array After Filter: 
 

Как на этой фотографии:
введите описание изображения здесь

Ответ №1:

Вероятно, что-то вроде этого:

 function main() {
  const data = `[
    {"Qty":"20", "Price":"0.0", "TotalPrice":"600"}, 
    {"Qty":"10", "Price":"20", "TotalPrice":"0.0"}, 
    {"Qty":"5", "Price":"100", "TotalPrice":"500"}
  ]`;
  const obj = JSON.parse(data);

  const calc_price = obj => 
    obj.Price == 0 ? obj.TotalPrice / obj.Qty : obj.Price;

  const calc_total_price = obj => 
    obj.TotalPrice == 0 ? obj.Price * obj.Qty : obj.TotalPrice;

  const oA = obj.map(o => [o.Qty, calc_price(o), calc_total_price(o)]);

  const ss = SpreadsheetApp.getActive();
  const sh = ss.getActiveSheet();
  sh.getRange(5,5,oA.length,oA[0].length).setValues(oA);
}
 

Выход:

введите описание изображения здесь

Комментарии:

1. Вы даете мне номер из последнего массива {"Qty":"5", "Price":"100", "TotalPrice":"500"} , мне нужен такой вывод, [{Qty:20, Price:30, TotalPrice:600}, {Qty:10, Price:20, TotalPrice:200}, {Qty:5, Price:100, TotalPrice:500}] а затем я помещаю его на лист с помощью этого кода sh.getRange(5,5,oA.length, oA[0].length).setValues(oA); .это то, что мне нужно, спасибо за ответ

2. Хорошо. Я обновил (фактически изменил) свой ответ.