Вы смешиваете две различные операции, которые используют очень похожий синтаксис:
1) slicing:
b = a[0:2]
Это делает копию фрагмента a
и назначает его к b
.
2) назначение среза:
a[0:2] = b
Этот заменяет срез a
содержимым b
.
Хотя синтаксис подобен (я полагаю, по дизайну!), это две разные операции.
Попробуйте:
function onEdit(e) {
if( e.range.getSheet().getName()=='STOCKOUT' && e.range.columnStart==1) {
e.range.offset(0,1).setValue((e.value)?e.range.getSheet().getRange("I1").getValue():'');
}else{
return;
}
}
Как насчет этой модификации? Когда значение удаляется из ячейки, объект события e
из onEdit(e)
имеет e.value.oldValue
. Используя это, ваш скрипт может быть написан следующим образом.
function onEdit(e) { // Modified
if (!e.value.oldValue) { // Added
var COLUMNTOCHECK = 1;
var DATETIMELOCATION = [0,1];
var SHEETNAME = 'STOCKOUT'
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
if( sheet.getSheetName() == SHEETNAME ) {
var selectedCell = ss.getActiveCell();
if( selectedCell.getColumn() == COLUMNTOCHECK) {
var balance = sheet.getRange("i1").getValue();
var dateTimeCell = selectedCell.offset(DATETIMELOCATION[0],DATETIMELOCATION[1]);
dateTimeCell.setValue([balance]);
}
}
}
}
Если я неправильно понял ваш вопрос и это Я не прошу прощения.
Я подумал 3 ситуации для редактирования ячейки.
Значение помещается в пустую ячейку.
e.value
включены в объект события. oldValue
не включено в e.value
. Li> e.oldValue
не включено в объект события. Существующее значение ячейки редактируется.
e.value
и e.oldValue
включены в объект события. oldValue
не включено в e.value
. Li> Значение удалено из ячейки.
e.value
и e.oldValue
включены в объект события. oldValue
включено в e.value
. Li> Я думал, что шаблон 3 можно использовать для ситуации ОП .