Javascript 根据Google工作表脚本中第一列合并单元格中的日期为行着色
我有一个类似下面的谷歌表格,日期在合并单元格的第一列,跨越几行。我正在尝试制作一个脚本,当第一列中的日期等于脚本运行的日期时,该脚本会自动为行(或文本)着色。在示例屏幕截图中,当日期为10月1日时,第11-15行应为彩色。因为脚本也在前一天运行,所以此时第6-10行已经着色。这可能是可能的使用条件格式,但我还想将其他功能应用于这些单元格(例如锁定编辑),所以我需要在脚本中执行 我发现了几个类似的问题,例如,但我无法将它们中的任何一个应用到我的电子表格中。可能合并的单元格导致了问题 说明:Javascript 根据Google工作表脚本中第一列合并单元格中的日期为行着色,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我有一个类似下面的谷歌表格,日期在合并单元格的第一列,跨越几行。我正在尝试制作一个脚本,当第一列中的日期等于脚本运行的日期时,该脚本会自动为行(或文本)着色。在示例屏幕截图中,当日期为10月1日时,第11-15行应为彩色。因为脚本也在前一天运行,所以此时第6-10行已经着色。这可能是可能的使用条件格式,但我还想将其他功能应用于这些单元格(例如锁定编辑),所以我需要在脚本中执行 我发现了几个类似的问题,例如,但我无法将它们中的任何一个应用到我的电子表格中。可能合并的单元格导致了问题 说明: 下面
- 下面的脚本将获取第一个单元格的日期值
表1的A列中的每个合并范围
- 它会将该日期值与今天的日期进行比较
- 如果单元格日期与今天的日期匹配,则 将行(直到F列)涂上橙色。否则,它将 把它们涂成白色
解决方案:
参考资料:
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');
}
});
}