Javascript 根据Google工作表脚本中第一列合并单元格中的日期为行着色

Javascript 根据Google工作表脚本中第一列合并单元格中的日期为行着色,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我有一个类似下面的谷歌表格,日期在合并单元格的第一列,跨越几行。我正在尝试制作一个脚本,当第一列中的日期等于脚本运行的日期时,该脚本会自动为行(或文本)着色。在示例屏幕截图中,当日期为10月1日时,第11-15行应为彩色。因为脚本也在前一天运行,所以此时第6-10行已经着色。这可能是可能的使用条件格式,但我还想将其他功能应用于这些单元格(例如锁定编辑),所以我需要在脚本中执行 我发现了几个类似的问题,例如,但我无法将它们中的任何一个应用到我的电子表格中。可能合并的单元格导致了问题 说明: 下面

我有一个类似下面的谷歌表格,日期在合并单元格的第一列,跨越几行。我正在尝试制作一个脚本,当第一列中的日期等于脚本运行的日期时,该脚本会自动为行(或文本)着色。在示例屏幕截图中,当日期为10月1日时,第11-15行应为彩色。因为脚本也在前一天运行,所以此时第6-10行已经着色。这可能是可能的使用条件格式,但我还想将其他功能应用于这些单元格(例如锁定编辑),所以我需要在脚本中执行

我发现了几个类似的问题,例如,但我无法将它们中的任何一个应用到我的电子表格中。可能合并的单元格导致了问题

说明:
  • 下面的脚本将获取第一个单元格的日期值
    表1的A列中的每个合并范围
  • 它会将该日期值与今天的日期进行比较
  • 如果单元格日期与今天的日期匹配,则 将行(直到F列)涂上橙色。否则,它将 把它们涂成白色

解决方案:
参考资料:

如果您不想将前几天的颜色变为白色,那么只需删除else语句并只保留if条件。再次感谢:)我可能应该问另一个问题,但无论如何我会在这里问。正在运行此操作的工作表已锁定,仅在给定范围内解锁。我现在也可以锁定彩色单元格,为以后解锁行吗?@avs感谢您的回复。不幸的是,我不知道答案。你能为这个场景提出一个专门的问题吗?这样其他专家也可以帮助你解决这个问题?再次感谢,给您带来不便,非常抱歉。如果我的答案解决了你的问题,请考虑接受它并鼓励它:“请看这里:”AVS,我将在几个小时内回顾它。
function myFunction() {
  
  const today = (new Date()).toLocaleString("sv-SE").slice(0,10);
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sh = ss.getSheetByName("Sheet1");

  const range = sh.getRange("A1:A"+sh.getLastRow());

  const mergedRanges = range.getMergedRanges();
  
  mergedRanges.forEach(mR=> 
     {                  
     temp_vals = mR.getValues().flat();
     cell_date = (new Date(temp_vals[0]).toLocaleString("sv-SE").slice(0,10));
  
     if(today === cell_date) {
       sh.getRange(mR.getRow(),mR.getColumn(),mR.getHeight(),6).setBackground('#FF8C00');
     }   
  else{
       sh.getRange(mR.getRow(),mR.getColumn(),mR.getHeight(),6).setBackground('#ffffff');   
  }
     });
}