为确保我不会一遍又一遍地添加相同的规则,我尝试首先清除正在使用的列(即索引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”变量(即,请求的格式)中的明文)。
答案 0 :(得分:2)
索引
要删除的规则的从零开始的索引。
这不是列索引。这是规则的索引。 0
将是最高优先级规则。 1
将是第二高的,依此类推。仅当存在7个条件格式设置规则时,您对索引6
的请求才有效。
您也可以尝试分别发出两个请求。不管第一个请求是否出错(如果0
上都没有规则),都可以使用finally
发出第二个请求。