我有一张工作表,其中包含一个复选框(单元格C36)。我已经更改了数据验证,因此在选中时,单元格= 1,在未选中时,单元格= 0。
现在我想要一个脚本,当C36 = 1时,它在不使用NOW()函数的情况下在B39中放置一个时间戳(HH:mm),而当C36 = 0时,B39应该为空白/空。>
我尝试使用NOW()函数,但是每次页面上的某些内容更改时都会更新,我希望它在被打勾后就保持静态。我使用了If / else脚本,但它要么在单元格中未输入任何内容,要么即使没有选中该框也总是有时间。
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Page 1');
var time = ss.getRange('B39');
var tick = ss.getRange('C36');
if(tick =='1'){
time.setValue(new Date()).setNumberFormat("HH:mm");
}
else if (tick =='0'){
time.setValue("");
}
}
答案 0 :(得分:0)
这应该完全满足您的要求:
function onEdit(e){
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Page 1');
var range = e.range;
Logger.log(range.getColumn()+ " "+range.getRow())
if (range.getColumn() != 3)
{Logger.log("wrong column")
return;}
if (range.getRow() != 36) return;
var prettyTime= Utilities.formatDate(new Date(),'America/Los_Angeles', "HH:mm" );
var B39 = ss.getRange(39,2);
if (range.getValue() == true)
B39.setValue(prettyTime);
if (range.getValue()== false)
B39.setValue("n/a");
您之前的问题是,无论编辑哪个单元格,它都在做事。