Я написал этот скрипт. Это работает для значений, но получаю ошибку #NUMBER! (# ЧИСЛО!) В строке заголовка (строка 1) введите описание изображения здесь . Где я не прав? Я думаю, что это проблема получения диапазона onEdit (), но я не уверен в этом. Я пытался изменить typeof как typeof e.value === 'number' ? 'string' : e.value
или typeof e.value !== 'number' ? "": e.value
и typeof e.value !== 'number' ? e.value : ""
, но это не работает так, как я хочу.
function onEdit(e) {
const value = (typeof e.value === 'number' ? "" : e.value);
Logger.log(value);
const sheet = e.range.getSheet();
// Get the "Coordinates" of the edit
let startColumn = e.range.getColumn();
Logger.log(startColumn);
let startRow = e.range.getRow();
// Get the ratios at the edited row
let hRatio = sheet.getRange(startRow, 8).getValue();
let iRatio = sheet.getRange(startRow, 9).getValue();
// Get array limit
let finalval = sheet.getRange("C1:C").getValues();
let final = finalval.filter(String).length;
let valueAlt = sheet.getRange(startRow, 6).getValue();
switch(startRow > 1 && startRow < (final + 1)) {
case startColumn == 5: // Edit on E column
sheet.getRange(startRow, 6).setValue(value * (1 - hRatio)); //Update F Cell
sheet.getRange(startRow, 7).setValue(value * (1 - hRatio) * (1 - iRatio)); // Update G Cell
break;
case startColumn == 6:
sheet.getRange(startRow, 5).setValue(value / (1 - hRatio));
sheet.getRange(startRow, 7).setValue(value * (1 - iRatio));
break;
case startColumn == 7: // Edit on G column
sheet.getRange(startRow, 5).setValue(value / (1 - hRatio) / (1 - iRatio));
sheet.getRange(startRow, 6).setValue(value / (1 - iRatio));
break;
case startColumn == 3: // Edit on C column
sheet.getRange(startRow, 5).setValue(valueAlt / (1 - hRatio)); // Update on E cell
sheet.getRange(startRow, 7).setValue(valueAlt * (1 - iRatio));
break;
case startColumn == 4: // Edit on D column
sheet.getRange(startRow, 5).setValue(valueAlt / (1 - hRatio)); // Update on E cell
sheet.getRange(startRow, 7).setValue(valueAlt * (1 - iRatio));
break;
default: break;
}
}
Я думаю, что это проблема диапазона onEdit (), но я не понимаю, где.