Вы можете создать триггер onEdit для запуска функции, которая сохранит значение отмеченной ячейки с помощью службы свойств [1], а также создаст основанный на времени триггер [2]. Временной триггер запустит функцию, чтобы снять галочку с [3] двух строк, и удалит ненужный триггер.
Вот код, который я тестировал:
function saveCheckedCell(e) {
//Checks if the previous value was false (unchecked) and if the new value is true (checked)
if(e.oldValue.toUpperCase() == "FALSE" && e.value.toUpperCase() == "TRUE") {
var selection = SpreadsheetApp.getActiveSpreadsheet().getSelection();
var currentCell = selection.getCurrentCell().getA1Notation();
//Creates the trigger to call the autoCheck function after 3 days
var trigger = ScriptApp.newTrigger("autoCheck")
.timeBased()
.after(3 * 3600 * 24 * 1000)
.create();
var triggerId = trigger.getUniqueId();
PropertiesService.getScriptProperties().setProperty(triggerId, currentCell);
}
else if(e.oldValue.toUpperCase() == "TRUE" && e.value.toUpperCase() == "FALSE") {
var r = e.range;
r.offset(0, 2).uncheck();
}
}
function autoCheck(e) {
var triggerId = e.triggerUid;
//Gets the recently checked cell
var a1Notation = PropertiesService.getScriptProperties().getProperty(triggerId);
var r = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getRange(a1Notation);
//Unchecks the 2 cells below the recently checked cell
r.offset(0, 2).check();
//Deletes the time trigger
var triggers = ScriptApp.getProjectTriggers();
for (var i = 0; i < triggers.length; i++) {
if (triggers[i].getUniqueId() == triggerId) {
ScriptApp.deleteTrigger(triggers[i]);
}
}
}
//Run this function only once to create the onEdit trigger
function createSpreadsheetEditTrigger() {
var ss = SpreadsheetApp.getActive();
ScriptApp.newTrigger('saveCheckedCell')
.forSpreadsheet(ss)
.onEdit()
.create();
}
В первый раз вам нужно запустить код прямо из скрипта приложений, чтобы вы могли авторизовать разрешения. Запустите функцию createSpreadsheetEditTrigger (), и он создаст сценарий и запросит экран согласия oauth.
Если вам это нужно, это области, которые вы должны иметь в файле манифеста [4]: ["https://www.googleapis.com/auth/script.scriptapp"," https://www.googleapis.com/auth/spreadsheets"]
[1] https://developers.google.com/apps-script/reference/properties/properties-service
[2] https://developers.google.com/apps-script/reference/script/clock-trigger-builder
[3] https://developers.google.com/apps-script/reference/spreadsheet/range#uncheck()
[4] https://developers.google.com/apps-script/concepts/manifests