在添加新格式之前无法删除条件格式

时间:2018-10-08 07:58:32

标签: google-apps-script google-sheets-api gs-conditional-formatting

为确保我不会一遍又一遍地添加相同的规则,我尝试首先清除正在使用的列(即索引6)上的所有条件格式。但是当我这样做时,我总是收到错误消息:

Invalid requests[0].deleteConditionalFormatRule: No conditional format on sheet: [THE_SHEET_ID] at index: 6

说该工作表上没有条件格式(不正确)。

我的Apps脚本代码的相关代码段:

  ...
  var redWarning = Sheets.newRequest();
  var redWarningRequest = Sheets.newAddConditionalFormatRuleRequest();
  redWarningRequest.rule = redWarningRule;
  redWarningRequest.index = 6;
  redWarning.addConditionalFormatRule = redWarningRequest;

  var clearRedWarning = Sheets.newRequest();
  var clearRedWarningRequest = Sheets.newDeleteConditionalFormatRuleRequest();
  clearRedWarningRequest.sheetId = sheetID;
  clearRedWarningRequest.index = 6;
  clearRedWarning.deleteConditionalFormatRule = clearRedWarningRequest;

  // Batch send requests
  var requests = [clearRedWarning, redWarning];
  var batchUpdate = Sheets.newBatchUpdateSpreadsheetRequest();
  batchUpdate.requests = requests;
  return Sheets.Spreadsheets.batchUpdate( batchUpdate, spreadsheetId );

如果我不包括clearRedWarning请求,那么一切正常,但这显然不能清除现有的条件格式。

我在这里想念什么?另外,是否有某种方法只能有条件地添加格式,即仅在尚不存在时才添加格式?

*编辑 根据tehhowch的请求,这是API资源管理器中的JSON响应(已删除一些值):

{
 "sheets": [
  {
   "properties": {
    "sheetId": [REDACTED],
    "title": "[REDACTED]"
   },
   "conditionalFormats": [
    {
     "ranges": [
      {
       "sheetId": [REDACTED],
       "startRowIndex": 1,
       "endRowIndex": 1000,
       "startColumnIndex": 6,
       "endColumnIndex": 7
      }
     ],
     "booleanRule": {
      "condition": {
       "type": "TEXT_CONTAINS",
       "values": [
        {
         "userEnteredValue": "yes"
        }
       ]
      },
      "format": {
       "backgroundColor": {
        "red": 1,
        "green": 0.8,
        "blue": 0.8
       },
       "textFormat": {
        "foregroundColor": {
         "red": 1,
         "green": 0.2,
         "blue": 0.2
        },
        "bold": true
       }
      }
     }
    }
   ]
  }
 ]
}

关于要发送的JSON ...这是在Google Apps脚本中,因此控制台日志在此处不存在。有一个“记录器”,但不确定要从请求中获取什么(上面的“ clearRedWarning”变量(即,请求的格式)中的明文)。

1 个答案:

答案 0 :(得分:2)

  

索引

     
    

要删除的规则的从零开始的索引。

  

这不是列索引。这是规则的索引。 0将是最高优先级规则。 1将是第二高的,依此类推。仅当存在7个条件格式设置规则时,您对索引6的请求才有效。

您也可以尝试分别发出两个请求。不管第一个请求是否出错(如果0上都没有规则),都可以使用finally发出第二个请求。

参考文献: