Я новичок в ГАЗЕ.Необходимо написать скрипт для выполнения следующего расчета:
В настоящее время 87 сотрудников должны распределяться на неделю с ограничением в 18 сотрудников в день.У меня есть процентное распределение (col B).Эти проценты основаны на других расчетах и будут меняться месяц за месяцем.
То, что в настоящее время делает руководитель группы, - простой расчет в электронной таблице (умножение% на 87).А затем он вручную корректирует числа, чтобы иметь максимум 18 в день (последний столбец - это то, что должно быть в конце)
allocation number recount
Mon 0.21 18 18
Tue 0.08 7 7
Wed 0.22 19 18
Thu 0.12 10 11
Fri 0.25 22 18
Sat 0.07 6 10
Sun 0.05 4 4
Проблемы:
Всегоколичество выделенных сотрудников после округления составляет 86 (например, потому что 87 * 0,21 = 18,27 -> 18 сотрудников)
Если в какой-то день получается более 18 сотрудников (например, в средуэто 22% * 87 = 19 работников), только 18 человек могут быть назначены на этот день, а остальные должны быть перенесены на следующий «самый загруженный» день (то есть день с самым высоким%).Это пятница, но в пятницу у нас уже 22, поэтому один из среды должен идти в четверг.И еще 4 с пятницы по субботу.
Звучит сложно.Но это то, что мне нужно - автоматизировать корректировки, другими словами, чтобы получить столбец Пересчитать из столбца Номер
Я запустил код, но не знаю, как поступить
Был бы очень признателен залюбые советы
function allocate() {
var ss=SpreadsheetApp.getActiveSpreadsheet();
var staff=ss.getSheetByName('staff');
var max = ss.getRange('B1').getValue();
for (var r=4; r<=10; r++)
{
var days=staff.getRange(r,2).getValue();
staff.getRange(r,3).setValue(days*max);
}
}
function round()
{
var ss=SpreadsheetApp.getActiveSpreadsheet();
var staff=ss.getSheetByName('staff');
for (var r=4; r<=10; r++)
{
var num=staff.getRange(r,3).getValue();
staff.getRange(r,3).setValue(Math.round(num));
}
}