如果已勾选复选框,则使用If语句添加时间戳

时间:2019-06-06 16:33:07

标签: google-apps-script google-sheets

我有一张工作表,其中包含一个复选框(单元格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("");
}
}

1 个答案:

答案 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");

您之前的问题是,无论编辑哪个单元格,它都在做事。