Google apps script 无法在添加新格式之前删除条件格式
为了确保我不会一次又一次地添加相同的规则,我尝试首先清除正在处理的列(即索引6)上的任何条件格式。但当我这样做的时候,我不断地得到错误:Google apps script 无法在添加新格式之前删除条件格式,google-apps-script,google-sheets-api,gs-conditional-formatting,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 表示该工作表上没有条件格式(这是不正确的) 我的应用程序脚本代码的相关片段: ... var redWarning = Sheets.n
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;
// Batch send requests
var requests = [clearRedWarning, redWarning];
var batchUpdate = Sheets.newBatchUpdateSpreadsheetRequest();
batchUpdate.requests = requests;
return Sheets.Spreadsheets.batchUpdate( batchUpdate, spreadsheetId );
如果我不包括clearRedWarning
请求,一切都可以正常工作,但这显然不会清除现有的条件格式
我错过了什么?此外,是否有某种方式可以只有条件地添加格式,即仅在格式不存在时添加格式
*编辑
根据tehhowch的请求,这是API资源管理器中的JSON响应(一些值已编辑):
关于正在发送的JSON。。。这是在谷歌应用程序脚本中,所以这里不存在控制台日志。有一个“记录器”,但并不确定您还需要从请求中获得什么(在上面的“clearRedWarning”var(即请求是如何制定的)中有明文)
索引
要删除的规则的从零开始的索引
它不是列索引。它是规则的索引。0
将是最高优先级规则。1
将是次高优先级规则,依此类推。只有存在7个条件格式规则时,您对索引6
的请求才有效
您也可以尝试分别发出这两个请求。无论第一个请求是否出错(如果0
中没有规则),您都可以使用finally
发出第二个请求
参考资料:
0
将是最高优先级规则。1
将是次高优先级规则,依此类推。只有存在7个条件格式规则时,您对索引6
的请求才有效
您也可以尝试分别发出这两个请求。无论第一个请求是否出错(如果0
中没有规则),您都可以使用finally
发出第二个请求
参考资料:
电子表格ID
,都是唯一的,因此在相关的JSON摘要中包含sheetId
,将有助于我们确定您在删除请求中是否引用了不正确的表格。嗯,有趣的@I'-'I,至少删除了错误:)但是,现在根本没有条件格式。。。如何获取特定工作表的当前条件格式?有了它,我可能只需要做一个IF语句,并且只在necessary@tehhowch我理解。但是,sheetId作为变量传递给执行条件格式设置的函数,因此它不可能不正确,因为添加条件格式可以很好地工作。这个问题不可能是一个sheed ID的“打字错误”。然而,I'-'I指出的索引实际上可能是某种东西。我会留意的。再次感谢你们所有的患者(和帮助!),GAS我是新来的:)好吧,在您这样做之前,文件的相应显示是什么?它显示了条件格式。就像我说的,它就在那里。。。所以我不明白为什么批量更新说不是?另外,如果索引上没有任何格式,它会抛出这个错误吗?在这种情况下,我将如何执行条件if语句,该语句仅在没有格式时应用格式?sheetId对于每个电子表格ID
,都是唯一的,因此在相关的JSON摘要中包含sheetId
将帮助我们确定您在删除请求中是否引用了不正确的表格。嗯,有趣的@I'-'I,至少删除了错误:)但是,现在根本没有条件格式。。。如何获取特定工作表的当前条件格式?有了它,我可能只需要做一个IF语句,并且只在necessary@tehhowch我理解。但是,sheetId作为变量传递给执行条件格式设置的函数,因此它不可能不正确,因为添加条件格式可以很好地工作。这个问题不可能是一个sheed ID的“打字错误”。然而,I'-'I指出的索引实际上可能是某种东西。我会留意的。再次感谢你们所有的病人(和帮助!),我是新来的:)
{
"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
}
}
}
}
]
}
]
}