【问题标题】:Google Spreadsheets tickbox with time-driven reset adds value to additional columns具有时间驱动重置功能的 Google 电子表格复选框为其他列增加了价值
【发布时间】:2020-10-12 17:51:42
【问题描述】:
【问题讨论】:
标签:
google-apps-script
google-sheets
google-sheets-formula
【解决方案1】:
你基本上是在问两个问题。
您需要一个onEdit() 函数,当您选中 D 列中的框时,该函数将允许您分别增加和减少 G 列和 H 列的值:
function onEdit(e) {
const row = e.range.getRow();
const col = e.range.getColumn();
const as = e.source.getActiveSheet();
if(as.getName() == "Sheet1" && col == 4 && e.range.getValue() === true) {
const plus_val = as.getRange(row,7).getValue();
const minus_val = as.getRange(row,8).getValue();
as.getRange(row,7).setValue(plus_val!=''?plus_val+1:1);
as.getRange(row,8).setValue(minus_val!=''?minus_val-1:-1);
}
}
然后您需要为函数 clearCheckboxes() 设置一个 time-driven trigger 以清除(设为 False)D 列中的复选框:
function clearCheckboxes(){
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet1');
sh.getRange('D2:D'+sh.getLastRow()).clearContent();
}
说明:
- 选择您喜欢的工作表名称;将两个脚本中的
Sheet1 调整为您感兴趣的工作表的名称。
- 将
onEdit(e) 和clearCheckboxes() 复制并粘贴到脚本编辑器中的空脚本中,然后单击保存。每当您选中 D 列中的复选框时,都会进行所需的计算。
- 为
clearCheckboxes() 创建一个时间触发器。为此,您可以单击项目的触发器并为此特定功能创建一个时间驱动的触发器。
【解决方案2】:
function onEdit(e) {
const sh=e.range.getSheet();
const sr=2;
if(sh.getName()=='Your Sheet Name' && e.range.columnStart==4 && e.range.rowStart>sr && e.range.getValue()=="TRUE") {
e.range.offset(0,3).setValue(e.range.offset(0,3).getValue()+1);
e.range.offset(0,4).setValue(e.range.offset(0,4).getValue()+1);
}
}
function toRunAtMidnight() {
const ss=SpreadsheetApp.getActive();
const sr=2;
const sh=ss.getSheetByName('Your Sheet Name');
sh.getRange(sr,4,sh.getLastRow()-sr+1,1).setValue("FALSE");
}