首页 > 解决方案 > 如果 2 个单元格匹配,Google 脚本会创建警报

问题描述

当 2 个单元格的值相同时,我想创建一个带有 YES_NO 问题的警报。1 个单元格将有当前时间 [=now()],而另一个单元格有一个到期时间。当 2 次匹配时,我可以有一个 ui 警报吗?这是我到目前为止编写的代码,即使时间不匹配,它目前也可以工作。

function LiDCOcheck(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ui = SpreadsheetApp.getUi();
  var buttons = ui.ButtonSet.YES_NO;
  var bed = ss.getRange("C2").getValue();
  var due = ss.getRange("D2").getValue();
  var time = ss.getRange("A2").getValue();

  if (due=time){    
    var lidco = ui.alert("It hsa been 24 hours since the LiDCO in Bed " + bed + " was calibrated.  Is it still required?", buttons);
    if (lidco == ui.Button.YES){
      ss.getRange("D2").setBackground('#6aa84f');}
    else{
      ss.getRange("D2").setValue('Not Required')}}
}

谢谢

标签: google-apps-scriptgoogle-sheets

解决方案


请注意,在您的原始脚本中,单个等号是一个赋值,并且需要一个双等号进行比较。

if (due=time) {

是错误的,而

if (due==time) {

更好。但是,它仍然不起作用!

我通常发现,在处理电子表格中的日期或时间时,最好将其转换为 javascript Date 对象以进行大多数操作,包括比较。

var due = new Date(ss.getRange("D2").getValue());
var time = new Date(ss.getRange("A2").getValue());

简单的比较只是比较getTime()函数的结果,也就是时间,单位是毫秒。

if (due.getTime()==time.getTime()){    

}

推荐阅读