0

我正在处理由多人编辑的 Google 电子表格。这是为了跟踪各种成员的统计信息,所以他们每个只更新一行。我要做的是检查行中的单元格何时更新,并根据更新日期更改该行中另一个单元格的背景。

function onEdit() {
 var s = SpreadsheetApp.getActiveSheet();
 if( s.getName() == "HT ~ Stats" ) { //checks that we're on the correct sheet
   var r = s.getActiveCell();
   if( r.getColumn() == 7 ) { //checks for the correct column
     var dateCell = r.offset(0,21);
     //var date = new Date()
     var date = Utilities.formatDate(new Date(), "GMT", "MM-dd-yyyy")

     dateCell.setValue(date); //sets column AB of selected row to the date of the update

 };
}

正是在这一点上,我被卡住了。在此之后我想要发生的事情是将 var date 的值与当前日期进行比较。比较后,如果结果在当前日期的 3 天内,我希望所选行中的第一个单元格将其背景更改为绿色。

这是我第一次在 Google Scripts 中做任何事情,所以我确信有任何更简单或更好的方法可以做到这一点。谢谢你的帮助 :)

4

1 回答 1

0

我尚未测试以下内容,但它可能会让您走上正轨。它基本上完成了您在上面所做的工作,但是在第二次编辑时,它获取原始日期,将其转换为整数,获取新的日期整数,计算出差异,如果大于 3 天(以毫秒为单位)然后设置第一个单元格的背景颜色。

它可能需要一些调整,但我希望它有所帮助。

 function onEdit() {
  //G ets current spreadsheet
  var s = SpreadsheetApp.getActiveSheet();
  // If on the right spreadsheet
  if( s.getName() == "HT ~ Stats" ) { 
    // Gets the active cell
    var r = s.getActiveCell();
    // If on the right column
    if( r.getColumn() == 7 ) {
      // Sets the AB column
      var dateCell = r.offset(0,21);
      // Retrieves the currentDate
      var currentDate = dateCell.getValue().getTime();
      // Creates a new date
      var date = new Date();
      // Adds the date to the AB cell
      dateCell.setValue(date);
      // Creates a date integer
      var dateInt = date.getTime();
      // Works out the difference of the current date and new date
      var difference = dateInt - currentDate;
      // Creates a 3 day integer
      var threeDays = 259200000;
      // If the difference is greater than 3 days. 
      if(difference >= threeDays)
      {
        //Set the first cell background colour.
        r.offset(0,-6).setBackgroundColor("#D3E375");
      }
    }
  }
}
于 2013-04-14T13:49:57.287 回答