首页 > 解决方案 > 如果取消选中复选框,如何使用 Google Sheets Apps 脚本清除单元格?

问题描述

不是程序员,所以我乞求一点帮助。我有一个非常简单的电子表格,其中某些列具有复选框和相邻的空列。此时我的代码允许如果选中该框,则当前日期和时间将填充到相邻列的下一个单元格中。(该代码适用于工作簿中的所有工作表。)我需要知道要添加或调整什么,以便如果未选中该框,则相邻单元格将切换回空。提前致谢!

function onEdit() {
var s = SpreadsheetApp.getActiveSheet();
var r = s.getActiveCell();
if( r.getColumn() == 2 ) { 
var nextCell = r.offset(0, 1);
if( nextCell.getValue() === '' ) 
nextCell.setValue(new Date()).setNumberFormat("MM-dd-yyyy hh:mm");
}

if( r.getColumn() == 4 ) { 
var nextCell = r.offset(0, 1);
if( nextCell.getValue() === '' ) 
nextCell.setValue(new Date()).setNumberFormat("MM-dd-yyyy hh:mm");
}

if( r.getColumn() == 8 ) { 
var nextCell = r.offset(0, 1);
if( nextCell.getValue() === '' ) 
nextCell.setValue(new Date()).setNumberFormat("MM-dd-yyyy hh:mm");
}

if( r.getColumn() == 10 ) { 
var nextCell = r.offset(0, 1);
if( nextCell.getValue() === '' ) 
nextCell.setValue(new Date()).setNumberFormat("MM-dd-yyyy hh:mm");
}

if( r.getColumn() == 14 ) { 
var nextCell = r.offset(0, 1);
if( nextCell.getValue() === '' ) 
nextCell.setValue(new Date()).setNumberFormat("MM-dd-yyyy hh:mm");
}

if( r.getColumn() == 16 ) { 
var nextCell = r.offset(0, 1);
if( nextCell.getValue() === '' ) 
nextCell.setValue(new Date()).setNumberFormat("MM-dd-yyyy hh:mm");
}
}

标签: datetimegoogle-sheetscheckbox

解决方案


假设 Google 表格复选框单元格值为 0(未勾选)、1(已勾选),您将修改现有的 if 块,如下所示:

if( r.getColumn() == 16 ) { 
    var nextCell = r.offset(0, 1);
    if (r.getValue() == 1) {
        if( nextCell.getValue() === '' ) 
            nextCell.setValue(new Date()).setNumberFormat("MM-dd-yyyy hh:mm");
    } else {
        nextCell.setValue('');
    }
}

提示:您还可以通过使用 switch 语句更好地整合脚本,也许

switch (r.getColumn()) {
    case 2:
    case 4:
    case 8:
    , etc ...
    var nextCell = r.offset(0, 1);
    if (r.getValue() == 1) {
        if( nextCell.getValue() === '' ) 
            nextCell.setValue(new Date()).setNumberFormat("MM-dd-yyyy hh:mm");
    } else {
        nextCell.setValue('');
    }
}

由于您在每种情况下都运行相同的代码块,因此更容易将该代码放在一个块中,然后您只需进行一次更改。

ps 你现在是程序员了,顺便说一句!


推荐阅读