#google-apps-script #google-sheets
#google-apps-script #google-таблицы
Вопрос:
Я пытаюсь настроить таймер на 24 часа при редактировании ячейки в таблицах. Если он не редактировался в течение 24 часов, эта строка должна быть заблокирована; в противном случае таймер должен быть сброшен на 24 часа, если он редактировался до 24 часов. Новичок в программировании Google Apps script; любые предложения будут оценены
function onEdit(e) {
var range = e.range;
range.setNote('Last modified: ' new Date());
ScriptApp.newTrigger("functionToLockCells").timeBased().after(24 * 60 *60 * 1000).create()
var triggers = ScriptApp.getProjectTriggers();
for (var i = 0; i < triggers.length; i ) {
if ( triggers[i].getHandlerFunction() == "functionToLockCells") {
ScriptApp.deleteTrigger(triggers[i]);
}}
}
function functionToLockCells() {
//First cell to lock
var col = 1;
// Get last row with data in sheet
var lastRow = sheet.getLastRow();
//Loop until last row in sheet is passed
lockRange(lastRow, col);
}
Ответ №1:
Вы можете добавить в свою onEdit()
функцию код, который создает запланированный одноразовый триггер для выполнения функции, которая блокирует ваши ячейки через 24 часа после редактирования ячейки.
ScriptApp.newTrigger("functionToLockCells")
.timeBased()
.after(24 * 60 *60 * 1000)
.create()
}
Если эта ячейка была отредактирована в течение 24 часов, вы можете удалить этот триггер, используя этот код :
var triggers = ScriptApp.getProjectTriggers();
for (var i = 0; i < triggers.length; i ) {
if ( triggers[i].getHandlerFunction() == "functionToLockCells") {
ScriptApp.deleteTrigger(triggers[i]);
}}
и создайте новый, снова используя первый фрагмент кода в этом ответе.
Процесс может быть следующим: после редактирования интересующей ячейки удалите активный триггер и создайте новый, который выполнит функцию через 24 часа. По истечении 24 часов ячейка будет заблокирована и, следовательно, ее больше нельзя / не следует редактировать. Итак, просто поместите часть удаления триггера (второй фрагмент кода) перед кодом создания триггера (первый фрагмент кода), и, предположительно, это сработает.
Комментарии:
1. Я вставил свой отредактированный скрипт в вопрос. Он не создает новый триггер, если редактирование внесено в течение 24 часов.
2. Этот код создает, а затем немедленно удаляет триггер. Попробуйте использовать только первый код моего ответа. Просто создайте только его и посмотрите, было ли оно создано.
3. На самом деле нет, я получаю сообщение об ошибке в строке 3: «Не удается прочитать диапазон свойств undefined»
4. Вы не запускаете функцию onEdit. Вы просто редактируете ячейку, и она запустится.
5. @user3447653 просто отредактируйте ячейку и посмотрите, работает ли она. Щелкните по списку триггеров проекта, чтобы увидеть, был ли создан триггер.