使用SpreadsheetApp脚本重置范围颜色

时间:2015-12-17 15:18:03

标签: google-apps-script google-sheets

我已经制作了这张公开表来解释交替行的问题 https://docs.google.com/spreadsheets/d/18PoyJLOgyPaQXl2PGtAzlTcY3c53UDzzGLFjWYQfVlU/edit#gid=0

奇怪的是,我现在可以使用 setBackground(null)重置单元格,但不能强制使用条件公式预格式化颜色填充任何单元格!我用这个公式

=MOD(ROW(),2)=0

以下是我的代码示例,用于在满足条件的情况下强制将有条件预格式化的单元格变为红色。如果没有,我想清除强制颜色,就像我手动点击单元格一样,转到

  

填充颜色>>重置

我试过了setBackground('None'),但它没有用。使用 clearFormat()的问题在于它删除了我在所有工作表上执行的条件格式规则

=MOD(ROW(),2)=0

灰色。本质上,我需要翻译我只是手动重置填充颜色,而不是删除格式,这反过来也删除了对齐。如果此方法不存在,那么如何创建具有样式颜色的格式规则来交替行,就像最初的情况一样。您可以在注释行中找到我已经尝试过这个。

function onEdit(e)
{
  var range = e.range;

  var sheet = SpreadsheetApp.getActiveSheet();
  var sName = sheet.getSheetName();
  var row   = range.getRow();
  var col   = range.getColumn();

  if(sName == 'AABO')
  {
    var rowValues = sheet.getRange(row + ':' + row).getValues();

    if( (rowValues[0][TASK_TYPE_COL_NUM - 1] == 'Configuration') && (rowValues[0][TOT_RW_COL_NUM - 1] > 2)
     || (rowValues[0][TASK_TYPE_COL_NUM - 1] == 'Integration')   && (rowValues[0][TOT_RW_COL_NUM - 1] > 3) )
    {
      sheet.getRange(row, TOT_RW_COL_NUM).setBackground('red');
    }
    else
    {
      sheet.getRange(row, TOT_RW_COL_NUM).setBackground('None');
//      sheet.getRange(row, TOT_RW_COL_NUM).clearFormat().setHorizontalAlignment("center").setVerticalAlignment("middle").setFormula("=MOD(ROW(),2)=0"); 
    }
  }

  SpreadsheetApp.flush();
}

1 个答案:

答案 0 :(得分:6)

我注意到您在setBackground()中放置的值是'None',这是不正确的。您可以使用CSS颜色(如'#ffffff''white')设置范围内所有单元格的背景颜色。如果要重置范围颜色,可以使用null

range.setBackground(null);

以下是使用null重置背景颜色的情况: How to set background color for a row based on current date in Google Docs Spreadsheet?