Отправка заказов на инвентарный лист
Я немного изменил ваши формы, добавив столбец с именем Ordered, который указывает "Да" при отправке элемента. Я также изменил ваши Item1, Item2 и Item3 на Socks, Shoes and Pants, что соответствует вашему инвентарному листу. В этом нет ничего сложного: он просто загружает данные в массив строк и добавляет их в список инвентаря и помечает столбец Упорядоченный как Да. Если клиенты не покупают полный пакет, то функция проверяет столбцы носков и брюк, чтобы увидеть, какие из них не пустые, а те, которые не являются пустыми, отправляются на инвентарный лист с номером в столбце заказов и помещаются в соответствующие столбцы. на листе инвентаря.
function submitOrders() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Orders');
var ish=ss.getSheetByName('Inventory');
var idx={hr:1,sr:2,hA:[],lc:9};
idx.hA=sh.getRange(idx.hr,1,1,idx.lc).getValues()[0];
idx.hA.forEach(function(e,i){idx[e.trim()]=i;})
var oA=sh.getRange(idx.sr,1,sh.getLastRow()-idx.sr+1,idx.lc).getValues();
oA.forEach(function(r,i){
if(r[idx.Ordered]!='Yes') {
if(r[idx.Complete]=='Yes') {
var row=[r[idx.SalesPerson],r[idx.CustomerName],r[idx.Date],r[idx.Orders],r[idx.Complete],r[idx.Orders],r[idx.Orders],r[idx.Orders]];
ish.appendRow(row);
sh.getRange(i+idx.sr, idx.Ordered+1).setValue('Yes');
}else{
var row=[r[idx.SalesPerson],r[idx.CustomerName],r[idx.Date],r[idx.Orders],r[idx.Complete],(r[idx.Socks])?r[idx.Orders]:'',(r[idx.Shoes])?r[idx.Orders]:'',(r[idx.Pants])?r[idx.Orders]:''];
ish.appendRow(row);
sh.getRange(i+idx.sr, idx.Ordered+1).setValue('Yes');
}
}
});
}
Листы перед запуском Сценарий:
Заказы:
Инвентарь:
Лист после запуска Сценарий:
Заказы:
Инвентарь:
Sheet appendRow ()