检查单元格更新Google电子表格

时间:2013-04-14 01:21:08

标签: google-apps-script google-sheets

我正在处理由多人编辑的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日期的值与当前日期进行比较。一旦比较,如果结果在当前日期的3天内,我希望所选行中的第一个单元格将其背景更改为绿色。

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

1 个答案:

答案 0 :(得分: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");
      }
    }
  }
}