datetime - 如果取消选中复选框,如何使用 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");
}
}
解决方案
假设 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 你现在是程序员了,顺便说一句!
推荐阅读
- c# - TeamsBot - 如何从对话更新事件中获取团队 ID?
- r - 如何添加一列来识别 R 中值的特定组合?
- amazon-web-services - 计算完成后关闭一个ec2实例
- javascript - Discord.js v12 Covid Stats 命令
- java - Jackson 如何将一个 Pojo 字段映射到 2 个(json)字段(相同的内容,不同的名称)
- c# - 实体框架扩展:不能 BulkMerge 具有空标识属性的实体
- mysql - 如何在 SQL 中查找包含一个或多个空值的列的列表
- c# - 即时将原始音频字节从 NAudio 转换为 wav 字节
- r - R - 将一些数据框列转换为行
- postgresql - 如何在远程 PostgreSQL 集群上运行 pg_relation_filepath-function?