The offset of the data in the column

Help with the problem. There are filled cells A1:A3, there are also filled cells B1:B3. I am adding a value to cell A4 and I need the available data to be in the range B1:B3 shifted down, that is, cell B1 became empty And the values that were in cells B1:B3 moved to cells B2:B4#1 BEFORE

#2 AFTER

it is worth noting that the cells in the first column are filled with the IMPORTAGE function

I tried the following code, but it doesn’t work:

function onEdit(e) {
 if (e && e.source) {
 if (e.source.getSheetName() !== 'Calculation') return;
 }
 if (e) {
 if (e.range && e.range.columnStart == 1 && e.range.rowStart == 1 && e.value != '') {
 var row = e.range.rowStart + 2;
 var column = e.range.columnStart + 1;
 var nextRow = row + 1;
 var nextColumn = column;
 var range = e.range.offset(nextRow, 0);
 if (SpreadsheetApp.getSheetByName('Calculation').getRange(range).isBlank()) {
 // Если диапазон пуст, активируем его
 SpreadsheetApp.getSheetByName('Calculation').getRange(range).activate();
 } else {
 // Если диапазон не пуст, добавляем сообщение об ошибке
 SpreadsheetApp.getActiveSpreadsheet().toast("Ошибка: диапазон не пуст");
 }
 } else if (e.range && e.range.columnStart == 1 && e.range.rowStart >= 2 && e.range.rowStart <= 3) {
 var row = e.range.rowStart + 1;
 var column = e.range.columnStart + 1;
 var nextRow = row + 1;
 var nextColumn = column;
 var range = e.range.offset(nextRow, 0);
 if (SpreadsheetApp.getSheetByName('Calculation').getRange(range).isBlank()) {
 // Если диапазон пуст, активируем его
 SpreadsheetApp.getSheetByName('Calculation').getRange(range).activate();
 } else {
 // Если диапазон не пуст, добавляем сообщение об ошибке
 SpreadsheetApp.getActiveSpreadsheet().toast("Ошибка: диапазон не пуст");
 }
 }
 }
}