在 Google 表格中使用条件格式根据日期更改单元格值(文本)?

Change cell value (text) based on date with conditinal formatting in Google Sheets?

我有问题。我们正在为我们的一个内部产品制作一个规划工具。在此工具中,我们可以手动切换项目(在本例中为包裹)的状态(下拉菜单)(E 列)。根据状态,它最终出现在员工计划概览选项卡之一中。但是,每个包裹都有一个离线日期(G 列)。该日期是包自动下线的时间。根据离线日期,我想自动将单元格状态切换为 'Offline'。问题是这个单元格也可以手动更改(对于其他状态)。

我在想,条件格式可能有一个技巧,也可以更改单元格内的值/文本。当当前日期是 'offline date' 或晚于离线日期时,条件格式会将单元格的状态更改为:“离线”。

有人有这方面的诀窍吗?提前致谢!

Link 例如 sheet:Whosebug example date changes cell sheet

如果 G 列中随附的离线日期等于函数 运行 的日期,则此函数会将 E 列中的状态更改为 'Offline'。

脚本:

function changeStatusToOffline() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Sheet1');
  var lastRow = sheet.getLastRow();

  // column E for status
  var statusRange = sheet.getRange(2, 5, lastRow - 1, 1);
  var statusValues = statusRange.getValues();
  // column G for offline dates
  var offlineDateRange = sheet.getRange(2, 7, lastRow - 1, 1);
  var offlineDateValues = offlineDateRange.getValues();

  // set time properties of today to 0 to compare date values only
  // do the same with the individual offline dates later
  var todayDate = new Date();
  todayDate.setHours(0,0,0,0);
  var todayTime = todayDate.getTime();

  // generate status output during iteration of date values
  var statusOutput = offlineDateValues.map((offlineDateValue, index) => {
    // the same with today's date
    var offlineDate = new Date(offlineDateValue);
    offlineDate.setHours(0,0,0,0)
    var offlineTime = offlineDate.getTime();

    // if trigger date value is same as offline date value, change status to offline
    if (todayTime == offlineTime) 
      return ['Offline'];
    // use existing value if date are not the same
    return statusValues[index];
  });

  // set the status range by bulk 
  statusRange.setValues(statusOutput);
}

注:

  • 通过运行手动测试脚本
  • 如果它成功完成了您需要的操作,那么继续设置每日触发器并在特定时间每天触发上述功能。 (例如每天凌晨 12 点)
  • 如果触发日期等于离线日期,这只会更新状态。 (这使得触发器将状态更改为离线一次)
  • 只有将离线日期更改为更晚的日期,才能在该日期再次运行脚本时自动更新状态。

之前:

之后: