为了确保不反复添加相同的规则,我首先尝试清除正在处理的列(即索引6)上的任何条件格式。但是当我这么做的时候,我总是得到一个错误:
Invalid requests[0].deleteConditionalFormatRule: No conditional format on sheet: [THE_SHEET_ID] at index: 6
说那张纸上没有条件格式(这是不正确的)。
我的应用程序脚本代码的相关片段:
...
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;
var requests = [clearRedWarning, redWarning];
var batchUpdate = Sheets.newBatchUpdateSpreadsheetRequest();
batchUpdate.requests = requests;
return Sheets.Spreadsheets.batchUpdate( batchUpdate, spreadsheetId );
如果我不包括
clearRedWarning
请求时,一切正常,但这显然没有清除现有的条件格式。
我错过了什么?另外,是否有某种方式可以只有条件地添加格式,即只在格式不存在时添加格式?
*编辑
{
"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。。。这是在谷歌应用程序脚本,所以控制台日志不存在这里。有一个“Logger”,但并不确定您还需要从请求中获得什么(在“clearRedWarning”var中有明文说明(即请求是如何形成的)。