Перейти к содержимому

macroStatus

await crafttechApi.macroStatus(counter, isBar, statuses);

Выводит на экран окно с прогресс-баром (индикатором выполнения) во время выполнения макроса.

  • counter (number) — счётчик, указывающий, сколько шагов выполняет макрос;
  • isBar (boolean) — необязательный параметр; флаг, указывающий, должен ли быть визуализирован индикатор;
  • statuses (string[]) — необязательный параметр; массив строк, каждая из которых описывает определенную стадию.
  • macroStatus (macroStatusType) — экземпляр класса.

После создания экземпляра через метод macroStatus, можно вызывать доступные методы для управления состоянием и отображением окна с прогресс-баром.

  • nextCount() — перейти на следующий шаг (текущий counter увеличится на единицу);
  • nextStage() — перейти на следующий статус (переход на следующий элемент массива statuses).

Здесь важна разница между nextCount и nextStage. Есть макросы, где нет необходимо описывать текущую работу макроса столь детально. Однако ряде макросов есть такая потребность — делить макрос на стадии, внутри каждой из которых есть определённый шаги.

Например, вам необходимо перенести данные из одного файла в другой. В исходном файле четыре листа, у этих листов 15203, 29389, 390, 193 ячеек, соответственно. Тогда в counter передаётся значение, равное сумме количества этих ячеек, а в statuses, например, строки рода «Копирование %Название_листа%».

const crafttechApi = await getCrafttechApiAsync();
const statuses = [
"Создание развёрнутой Таблицы 1",
"Создание развёрнутой Таблицы 2",
"Создание развёрнутой Таблицы 3",
"Создание развёрнутой Таблицы 4",
"Создание развёрнутой Таблицы 5",
];
const macro = await crafttechApi.macroStatus(800, true, statuses);
let k = 1;
let interval = setInterval(() => {
if (k % 1 === 0) {
macro.nextCount();
}
if (k % 200 === 0) {
macro.nextStage();
}
k++;
if (k > 1000) {
clearInterval(interval);
}
}, 10);

Код выше имитирует процесс постепенного обновления прогресс-бара с переключением этапов выполнения на определённых промежутках времени. На реальных макросах применение nextCount/nextStage понадобится, например, при завершении определённой функции, цикла или другого фрагмента кода.