Функция перебрает масив.
Условия:
Ниже вариант, но никак не могу разобраться, как корректно записать данные в Таблицу
function departure() {
function convertToSimpleArray(array){
var res=[];
for (var i=0; i<array.length; i++)
if (!Array.isArray(array[i]))
res.push(array[i]);
else
res=res.concat(convertToSimpleArray(array[i]));
return res;}
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var invoices = sheet.getRange("B2:B14").getValues();
var surnames = sheet.getRange("C2:C14").getValues();
var qts = sheet.getRange("D2:D14").getValues();
var invoice = convertToSimpleArray(invoices);
var surname = convertToSimpleArray(surnames);
var qt = convertToSimpleArray(qts);
for (var i = 0; i < invoice.length; i++) {
var numberOfqt = 0;
for (var j = 0; j < invoice.length; j++) {
if (invoice[i] == invoice[j] && surname[j] != null && i != j )
numberOfqt += parseInt(qt[j]);
if (invoice[i] != invoice[j] && surname[j] != null)
return qt[j];
}
return numberOfqt;
}
На выходе пытаюсь получить это:
Необходимо оперделиться с точкой входа. Пользовательские формулы требуют данных на входе. Не советую использовать getValues
и все такое.
/**
* Выводит что-то
*
* @param {Range} scheta - Колонка счетов.
* @param {Range} fios - Колонка ФИО.
* @param {Range} vizovy - Колонка вызовов.
* @param {Number} row - Вывести для конкретной строки.
* @return что надо.
* @customfunction
*/
function departure(scheta, fios, vizovy, row) {
try {
if (!((scheta.length == fios.length) == (vizovy.length == fios.length)))
return '#SIZEOF';
var stack = {};
for (var i = 0; i < scheta.length; i++) {
var schet = ("" + scheta[i][0]) !== "" ? scheta[i][0] : "undefined";
if (!stack.hasOwnProperty(schet)) {
stack[schet] = {
once: true,
sumFio: 0,
sumEmpty: 0,
hasFio: false,
};
} else {
stack[schet].once = false;
}
if (fios[i][0]) {
stack[schet].sumFio += vizovy[i][0];
stack[schet].hasFio = true;
} else {
stack[schet].sumEmpty += vizovy[i][0];
}
}
if (row && row > 0) {
var schet_ = ("" + scheta[row - 1][0]) !== "" ?
scheta[row - 1][0] : "undefined";
return stack[schet_].hasFio ? stack[schet_].sumFio : 0;
}
var res = [];
for (var i = 0; i < scheta.length; i++) {
var row = [];
var schet = ("" + scheta[i][0]) !== "" ? scheta[i][0] : "undefined";
var item =
stack[schet].hasFio ? stack[schet].sumFio : 0;
row.push(item);
res.push(row);
}
return res;
} catch (err) {
return err.message;
}
}
Для следующих данных
=departure(A2:A13,B2:B13,C2:C13)
вернет расчет для всего массива=departure(A2:A13,B2:B13,C2:C13, 1)
вернет расчет для строки 1 и указанного массиваСкопировать файл с решением
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть класс в котором нужно инициализировать переменные, что естьДоступ к этим переменным идет через json файл, но в таком случае выдает undefined,...
Как можно добавить кнопку "Добавить точку" как на скрине?
Как связать блок с contenteditable с переменной используя vue?