- Вы хотите обновлять функцию ячейки "A1" каждый определенный интервал времени.
Если мое понимание верно, как насчет этой модификации?
Точки модификации:
- В вашем скрипте используется триггер события OnEdit.В этом случае при редактировании ячейки срабатывает триггер.
- Я думаю, что это может не подходить для вашей ситуации.
- Как насчет использования триггера, управляемого по времени?
- В некоторых случаях есть орфографические ошибкитвой сценарийПри этом переменные не используются, и возникает несколько ошибок.
Когда вышеуказанные точки отражаются в вашем скрипте, это становится следующим:
Модифицированный скрипт 1:
function forceEval(){ // Modified
var sheetName = "test-r";
var cell = "A1";
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(sheetName); // Modified
var orig = sheet.getRange(cell).getFormula(); // Modified
var temp = orig.replace("=", "?");
sheet.getRange(cell).setFormula(temp); // Modified
SpreadsheetApp.flush();
sheet.getRange(cell).setFormula(orig); // Modified
}
- После того, как вы изменили сценарий, для выполнения функции
forceEval()
каждый определенный интервал времени, пожалуйста, установите управляемый по времени триггер. - В этом сценарии
#NAME?
отображается на мгновение.Если вы не хотите этого делать, как насчет следующего примера скрипта?
Модифицированный скрипт 2:
function forceEval(){
var sheetName = "test-r";
var cell = "A1";
var ss = SpreadsheetApp.getActiveSpreadsheet();
var range = ss.getSheetByName(sheetName).getRange(cell);
var formula = range.getFormula();
range.clearContent();
SpreadsheetApp.flush();
range.setFormula(formula);
}
Установить управляемый по времени триггер:
Чтобы установить управляемый по времени триггер, вы можете установить его вручную .
Также вы можете установить его с помощью скрипта.Следующий скрипт устанавливает управляемый временем триггер для функции forceEval
.В этом примере сценария, когда запускается setTrigger()
, функция forceEval()
запускается каждые 10 минут.При этом формула ячейки «А1» обновляется каждые 10 минут.
function setTrigger() {
var minutes = 10; // In this case, as a sample value, it's 10 minutes.
var functionName = "forceEval";
var triggers = ScriptApp.getProjectTriggers();
for (var i = 0; i < triggers.length; i++) {
if (triggers[i].getHandlerFunction() == functionName && triggers[i].getTriggerSource() == ScriptApp.TriggerSource.CLOCK) {
ScriptApp.deleteTrigger(triggers[i]);
}
}
ScriptApp.newTrigger(functionName).timeBased().everyMinutes(minutes).create();
}
Ссылка:
Если я неправильно понял ваш вопрос, и это было не то направление, которое вы хотите, я прошу прощения.