我正在处理由多人编辑的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中做任何事情,所以我确信有更简单或更好的方法来做到这一点。感谢您的帮助:))
答案 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");
}
}
}
}