У меня есть следующая электронная таблица (и это идеальное начальное состояние):

Когда вы вводите число в желтом поле (B55), C55 и D55 рассчитываются (на основе других данных, не относящихся к проблеме).
Вот что мне нужно сделать для макроса: (1) Скопируйте B58 и вставьте значение ("1") вB55. Это изменит значения C55 и D55. (2) Скопируйте C55, вставьте значение в C58. (3) Скопируйте D55, вставьте значение в D58. (4) Повторите шаги 1-4, но на этот раз со строкой 59. (5) Повторите, но со строкой 60. (6) И т. Д.
Так что, если скрипт выполнялся только один раз (на B58), ондолжен выглядеть как ...

Если скрипт выполняется с 4 строками данных года (B58-B61), и это то, что код скриптаниже следует сделать, вывод должен выглядеть следующим образом:

Действительно, он должен работать в течение 20 итераций с конечным значением «100» лет. Но для краткости и для иллюстрации проблемы я остановился на «15». Но скажем, например, я ввожу 100 в желтом поле, я получаю ...

Если бы я запустил сценарий в этот моментоднако я получаю ...

Видите, как они все имеют одинаковое значение? Записанный мной макрос копирует последнюю запись в C55 и D55 вместо вычисленных значений для 1, 5, 10 и т. Д.
Что я делаю не так?
ВотСценарий, который он создал:
function TEST1() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('B55').activate();
spreadsheet.getRange('B58').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('C58').activate();
spreadsheet.getRange('C55').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('D58').activate();
spreadsheet.getRange('D55').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('B55').activate();
spreadsheet.getRange('B59').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('C59').activate();
spreadsheet.getRange('C55').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('D59').activate();
spreadsheet.getRange('D55').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('B55').activate();
spreadsheet.getRange('B60').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('C60').activate();
spreadsheet.getRange('C55').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('D60').activate();
spreadsheet.getRange('D55').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('B55').activate();
spreadsheet.getRange('B61').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('C61').activate();
spreadsheet.getRange('C55').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('D61').activate();
spreadsheet.getRange('D55').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
};
Примечание: это упрощение большего требования. Необходим макрос, я не могу превратить таблицу в несколько формул.