Пошаговое выполнение с отладчиком Google Таблиц

Я посмотрел несколько видеороликов и прочитал столько же веб-страниц о том, как отлаживать макрос Google Sheets. Как ни странно, я не могу заставить этот смехотворно простой макрос работать. Он просто берет значения в столбце A и сортирует их, чтобы отправить повторяющиеся значения в конец. Когда я пытаюсь отладить макрос с помощью шага внутрь, кажется, что шаги на самом деле ничего не делают, пока я не выполню последний оператор. Я вижу ту же проблему с отладчиком с еще более простым макросом, который работает. Ничего не происходит, пока я не делаю последний шаг. Кстати, я написал и отладил гораздо более сложные сценарии Excel VBA без проблем, как со сценариями Google. Я пытаюсь перейти на таблицы Google из-за того, что Excel не является вредоносным ПО.

function EliminateDuplicates() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A1:A20').activate()
  .sort({column: 1, ascending: true});
  spreadsheet.getRange('B2').activate();
  spreadsheet.getCurrentCell().setFormula('=A2=A1');
  spreadsheet.getRange('B2:B20').activate();
  spreadsheet.getRange('B2').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
  spreadsheet.getRange('B1').activate();
  spreadsheet.getCurrentCell().setValue('FALSE');
  spreadsheet.getRange('B1:B20').activate();
  spreadsheet.getRange('B1:B20').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('A1:B20').activate()
  .sort({column: 2, ascending: true});
};

person Dennis Kane    schedule 07.05.2018    source источник
comment
Основное различие между Google Sheets и Excel заключается в том, что Excel работает на вашем компьютере. Поскольку Google Sheets запускает этот вызов скрипта где-то на сервере, он кэширует и внутренне оптимизирует вызовы/шаги функций, которые используют API и интерфейсы Google. Чистые вызовы JavaScript будут выполняться в отладчике по отдельности. Причина, по которой вы не видите вывода до последнего вызова, заключается в том, что это кэширование происходит. Вы можете принудительно очистить буфер, вызвав SpreadsheetApp.flush()   -  person tehhowch    schedule 07.05.2018
comment
Возможный дубликат Почему не копируется (... PASTE_VALUES) работать в середине макроса?   -  person tehhowch    schedule 07.05.2018
comment
Да, это сделало это. Спасибо. Я думал, что кеш может быть проблемой, но не совсем знал, что с этим делать.   -  person Dennis Kane    schedule 07.05.2018