- Вы хотите подсчитывать значение номера ячейки «A13» в активной электронной таблице каждые 0,5 секунды.
- Вы хотите зациклить число от 0 до 360.
- Вы хотите зациклить этот цикл как бесконечный цикл.
Если мое понимание верно, как насчет этого примера сценария? Я думаю, что есть несколько ответов для вашей ситуации. Поэтому, пожалуйста, подумайте об этом как об одном из них. В этом примере сценария я использовал боковую панель. А именно, я использовал Javascript и Google Apps Script. Я думал, что бесконечный цикл может быть достигнут путем запуска скрипта Google Apps из боковой панели. Я могу подтвердить, что в моей среде это число может быть больше, чем максимальное время выполнения сценария Google Apps, равное 6 минутам.
Использование:
При использовании этого сценария выполните следующий поток действий.
- Скопируйте и вставьте следующий скрипт в редактор скриптов (скрипт-контейнер Spreadsheet).
- Запустить функцию
run()
.
- При этом в электронной таблице открывается боковая панель.
- Когда вы нажимаете кнопку «Пуск», число помещается в ячейку «A13» активного листа, и значение подсчитывается каждые 0,5 секунды. Число повторяет цикл от 0 до 360.
- Если вы хотите остановить подсчет, пожалуйста, нажмите кнопку «Стоп».
Пример сценария:
function setValue(v) {
Utilities.sleep(500);
SpreadsheetApp.getActiveSheet().getRange("A13").setValue(v);
}
function run() {
var str = '<input type="button" value="start" onclick="start()"><input type="button" id="stop" value="stop" onclick="stop=false"><script>var stop=false; function work(v){return new Promise((resolve, reject)=> google.script.run.withSuccessHandler(()=> resolve()).setValue(v));}async function start(){stop=true; var i=0; while(stop){await work(i); i=(++i) % 361;}}</script>';
var html = HtmlService.createHtmlOutput(str);
SpreadsheetApp.getUi().showSidebar(html);
}
Расширенный HTML:
В приведенном выше примере сценария HTML минимизирован. Ниже приведен скрипт расширенного HTML.
Это только для подтверждения HTML. Поэтому вам не нужно копировать и вставлять это.
<input type="button" value="start" onclick="start()">
<input type="button" id="stop" value="stop" onclick="stop=false">
<script>
var stop = false;
function work(v) {
return new Promise((resolve, reject) => google.script.run.withSuccessHandler(() => resolve()).setValue(v));
}
async function start() {
stop = true;
var i = 0;
while(stop) {
await work(i);
i = (++i) % 361; // This is from Dimu Designs's answer.
}
}
</script>
Примечание:
Ссылки:
Если этот метод не был направлением вашей цели, я прошу прощения.