【发布时间】:2018-10-10 06:06:19
【问题描述】:
为确保我不会一遍又一遍地添加相同的规则,我首先尝试清除我正在使用的列(即索引 6)上的所有条件格式。但是当我这样做时,我不断收到错误:
Invalid requests[0].deleteConditionalFormatRule: No conditional format on sheet: [THE_SHEET_ID] at index: 6
说该工作表上没有条件格式(这是不正确的)。
我的Apps Script代码的相关sn-p:
...
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”变量中以明文形式显示(即如何制定请求)。
【问题讨论】:
-
那么,在您执行此操作之前,适当的
spreadsheets.get会为文件显示什么? -
显示条件格式。就像我说的,它在那里......所以我不明白为什么批量更新说它不是?另外,如果该索引上没有任何格式,它会抛出这个错误吗?在那种情况下,我将如何做一个条件 if 语句,如果没有任何格式,则只应用格式?
-
consolesends the logs to Stackdriver. View -> Stackdriver logs. 每个spreadsheetId的SheetId 都是唯一的,因此在相关的JSON 摘要中包含sheetId将有助于我们所有人确定您是否在删除请求中引用了错误的工作表。跨度> -
嗯,有趣的@I'-'I 那,至少删除了那里的错误:) 但是,现在根本没有条件格式......我怎样才能在 GAS 中获得当前的条件格式一个特定的表?有了这个,我也许可以只做一个 IF 语句,并且只在必要时应用它
-
@tehhowch 我明白了。但是,sheetId 作为变量传递给执行条件格式的函数,因此它不可能是不正确的,因为它可以很好地添加条件格式。问题不可能与Sheed ID“错字”有关。然而,索引,由我指出'-'我可能实际上是什么。我会调查的。再次感谢你们的患者(和帮助!),GAS 我对我来说是新手 :)
标签: google-apps-script google-sheets-api gs-conditional-formatting