Можете ли вы создать «секундный» таймер в Google Sheets? - PullRequest
0 голосов
/ 09 марта 2020

Таблица тестовых таймеров

Насколько я понимаю, это невозможно из-за ограничений Spreadsheet Settings > Calculations. Я успешно внедрил Days, Hours и Minutes в свой таймер - но было бы здорово иметь Seconds.

Current Timer

Формулы:

  • = IFERROR (ДЕНЬ (AH9-NOW ()), 0)
  • = IFERROR (ЧАС (AH9-NOW ()), 0)
  • = IFERROR (MINUTE (AH9-NOW ()), 0)

*AH9 относится к серой ячейке даты в таймере

The Seconds таймер не важен, больше эстетики c - но мне было интересно посмотреть, возможно это или нет.

1 Ответ

2 голосов
/ 14 марта 2020

Я добавил в вашу книгу какой-нибудь скрипт, который запускает таймер секунд.

Добавленный мной скрипт подвержен ограничениям времени выполнения скрипта Apps, но я добавил различные триггеры, в которых, надеюсь, следует запустите скрипт, как только он закончится. Я также добавил кнопку для запуска скрипта, но вы можете удалить это?

Сам скрипт будет работать в течение 4-5 минут, триггеры должны установить это так, чтобы небольшой интервал, когда секунды не будут работать.

Обратите внимание, что для запуска этого скрипта необходимо добавить дату в ячейку - если вы установите A1 в черный цвет, вы увидите это там. Сценарий добавит это, если вы удалите его, поэтому вам не нужно беспокоиться о том, чтобы оставить его там, и т. Д. c.

Если вам нужно изменить ячейку там, где она есть, просто измените глобальную переменную в проект скрипта приложений.

Надеюсь, это поможет !!


Используемый мной скрипт был таким, как показано ниже. Триггеры, которые я использовал, были управляемыми по времени триггерами на основе минутного таймера, а затем устанавливали его на каждую минуту. Поскольку каждая функция скрипта работает в течение 15 секунд, это создает al oop в течение минуты, которая срабатывает каждую минуту.

Я поиграл, но, к сожалению, я не мог правильно понять математику, чтобы заставить ее работать дольше:) ...

var CELL_RANGE = 'A1'

function updateCell() {
  for (i=0; i<15; i++){
    Utilities.sleep(1000);
    var date = new Date();
    SpreadsheetApp.getActiveSheet().getRange(CELL_RANGE).setValue(date);
    SpreadsheetApp.flush();
    updateCell1()
  } 
}

function updateCell1() {
  for (i=0; i<15; i++){
    Utilities.sleep(1000);
    var date = new Date();
    SpreadsheetApp.getActiveSheet().getRange(CELL_RANGE).setValue(date);
    SpreadsheetApp.flush();
    updateCell2()
  } 
}

function updateCell2() {
  for (i=0; i<15; i++){
    Utilities.sleep(1000);
    var date = new Date();
    SpreadsheetApp.getActiveSheet().getRange(CELL_RANGE).setValue(date);
    SpreadsheetApp.flush();
    updateCell3()
  } 
}

function updateCell3() {
  for (i=0; i<15; i++){
    Utilities.sleep(1000);
    var date = new Date();
    SpreadsheetApp.getActiveSheet().getRange(CELL_RANGE).setValue(date);
    SpreadsheetApp.flush();
    updateCell()
  } 
}
...