如何使用Google Apps脚本覆盖或删除Google表格中的条件格式

时间:2016-11-02 21:55:27

标签: google-apps-script google-sheets google-apps

长话短说:我需要一些帮助修改脚本来覆盖或删除Google表格中应用的条件格式颜色,具体取决于单元格中是否有注释。

完整说明:我有this scheduling template我们用来跟踪内容制作工作。编辑器喜欢使用条件格式来显示工作表上最快的日期。我们还希望通过向它们添加注释来标记单元格完成(因此我们可以在单元格中看到计划的完成日期以及注释中的实际完成日期),这将使该单元格变灰。使用笔记对单元格进行灰化处理可以使用此脚本从论坛中拼凑出来:

function onOpen() {   var sheet = SpreadsheetApp.getActiveSheet(),
   data = sheet.getDataRange(),
   notes = data.getNotes(),
   bkgs = data.getBackgrounds();   for (var i = 0, len = notes.length; i < len; i++)   {
 for (var j = 0, jlen = notes[0].length; j < jlen; j++)
 {
   if (notes[i][j])
     bkgs[i][j] = 'gray';
 }   }   data.setBackgrounds(bkgs); }

但是,它不会出现条件格式存在的单元格,因此我寻找更多代码来解决该问题。我尝试添加sheet.clearFormats();在if语句中,如下所示:

{
   if (notes[i][j])
     bkgs[i][j] = 'gray';
     sheet.clearFormats();
 }   }   data.setBackgrounds(bkgs);

......起初似乎起作用,但随后纸张完全瘫痪了。然后,我试图打开和关闭它,然后停止了几次。有关如何在不崩溃选项卡的情况下覆盖或删除此设置中的条件格式的任何想法?

1 个答案:

答案 0 :(得分:0)

setBackground是一个范围对象。它不会使用数组,这有效:

function changeConditionalFormat() {
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var s = ss.getActiveSheet()
  var range= s.getRange(2,8,5,1)
  range.clearFormat()
  range.setBackground('grey');
}