Я немного поиграл с этим. Я знаю, что вы пытались сместить ячейки вниз, но я обнаружил, что проще сместить SKU, тип, количество и метку времени вправо, чтобы вести журнал транзакций в электронной таблице.
Так что, надеюсь, это даст вам некоторыепонимание того, как вы можете сделать это самостоятельно по-своему.
Вот код:
Это функция onEdit () (т.е. простой триггер)
function onEdit(e) {
var sh=e.range.getSheet();
if(sh.getName()!='Sheet1')return;
var rg=sh.getRange(1,2,3,1);
var vA=rg.getValues().map(function(r){return r[0];});
var sku=vA[0];
var type=vA[1];
var quan=vA[2];
e.source.toast(sku + ',' + type + ',' + quan);
SpreadsheetApp.flush();
if(e.range.columnStart==2 && e.range.rowStart<5 && sku && type && quan) {
sh.getRange("B4").setValue(Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "yyyyMMddHHmm"));
var sh2=e.source.getSheetByName('Sheet2');
var rg2=sh2.getDataRange();
var luA=rg2.getValues();
for(var i=1;i<luA.length;i++) {
if(luA[i][0]==sku) {
if(type=='Sold') {
//sh.getRange(3,2).setValue(Number(luA[i][2]-quan));
sh2.getRange(i+1,3).setValue(Number(luA[i][2]-quan));
e.source.toast('Sold');
}
if(type=='New') {
//sh.getRange(3,2).setValue(Number(luA[i][2]+quan));
sh2.getRange(i+1,3).setValue(Number(luA[i][2]+quan));
e.source.toast('New');
}
sh.insertColumnAfter(2);
sh.getRange(1,3,4,1).setValues(sh.getRange(1,2,4,1).getValues())
sh.getRange(1,2,4,1).clearContent();
}
}
}
}
А вот как выглядят мои Лист1 и Лист2. Каждый элемент в Sheet2 начинался с 100.
Sheet1:
Sheet2:
В случае, если вы никогда не работали с функцией onEdit (e), e - это параметр, который содержит данные из объекта события, который загружается при получении триггера события. Таким образом, вы не можете запустить эту функцию из редактора сценариев. Вы должны скопировать его и внести соответствующие изменения в столбец 2, заполнив значения для SKU, Тип и количество.
Надеемся, что этот пример даст вам некоторое представление о том, как вы можете продолжить.