В зависимости от (Id).Как разместить эту базу данных (Ppt) в (MP04 / MP 05) - PullRequest
0 голосов
/ 12 ноября 2018

Описание: у меня есть лист (Ppto) со списком идентификаторов (Id), кредитов (Cedent) и дебетов (Recept).Я хотел бы переместить эти транзакции в MP05, если Id равны.Если идентификаторы не равны, переходите к MP04.Критерий: если Id = использовать MP05.Если Id ≠, используйте MP04.Я новичок в скрипте Google, мне нужна поддержка.

Спасибо за внимание

function mp() {
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var ppto = ss.getSheetByName('Ppto.');
 var Id = ppto.getRange('B5:B12').getValues();
 var cedent = ppto.getRange('D5:D12').getValues();
 var recept = ppto.getRange('E5:E12').getValues();

    for (var i = 0; i < cedent.length; i++) {
    for (var j = 0; j < recept.length; j++) {

        if (cedent[i]  != '' )   {
        if (recept[j]  != '' )   {
        //if (Id === Id) // MP-05
        //if (Id != Id) // MP-04  
        {
          ppto.getRange('H5:H12').setValues(cedent);
          ppto.getRange('I5:I12').setValues(recept);


          Logger.log(cedent[i]);

         ppto.getRange('j5:j12').setValues(cedent);
         ppto.getRange('k5:k12').setValues(recept);

    }
   } 
}
}
}
  }

1 Ответ

0 голосов
/ 13 ноября 2018

Стратегия:

  • FIFO: первый пришел, первый вышел
  • Перебрать все строки, используя forEach
  • Если кредит присутствует, повторите цикл по всем строкам, используя some для поиска квитанций
  • Если кредит e[2] в первом цикле равен поступлениям f[3] во втором цикле, проверьте идентификатор [0]
  • Если ID равен, соединить два пустых столбца в конце, иначе на 2-й позиции, чтобы создать равномерный массив из 6 столбцов
  • Установить этот массив обратно на лист.

Пример сценария:

function transactionSegregator() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ppto = ss.getSheetByName('Ppto.');
  var data = ppto.getRange('B5:E12').getValues();
  data.forEach(function(e) {
    //e: Each row
    if (e[2] && e.length == 4) {
      //e[2]:credits; If this row is not spliced
      data.some(function(f) {
        //f:Each row; Second loop
        if (e[2] == f[3]) {
          //if credits = debit
          if (e[0] == f[0]) {
            //if id = id, splice two empty columns after Col4, else after Col2
            e.splice(4, 0, '', '');
            f.splice(4, 0, '', '');
          } else {
            e.splice(2, 0, '', '');
            f.splice(2, 0, '', '');
          }
          return true;
        }
      });
    }
  });
  Logger.log(data);
  ppto.getRange(5, 6, data.length, data[0].length).setValues(data);// F5
}

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...