【问题标题】:How to programmatically delete all conditional formatting on a Google Sheet?如何以编程方式删除 Google 表格上的所有条件格式?
【发布时间】:2018-05-30 14:20:54
【问题描述】:

我尝试结合https://developers.google.com/sheets/api/samples/conditional-formatting中的两个示例

  1. 读取所有条件格式。
  2. 删除它们。

删除需要删除索引,但这不会在读取 API 响应中返回。我尝试假设返回的格式在数组中的索引是合适的,但是在操作中间,在它们被全部删除之前遇到了一个错误“索引处没有条件格式”。

这是我要清除的工作表的副本:https://docs.google.com/spreadsheets/d/1Y0tsEcka-1gziimesE74IhPFqGkUO985eZNoVQ9y0BU/edit#gid=0

【问题讨论】:

  • 我能够大部分通过尝试单独删除每个规则并忽略错误来解决此问题,但这仍然会在工作表中留下一些格式。
  • 我遇到了同样的问题,与阅读相比,关于更新/删除的文档不清楚。 @wescpy 可能知道
  • 为了快速更新以防其他人阅读此内容,我最终做了与上述相同的操作。一次删除每个规则 1(使用 0 的索引)似乎有效(因为每次更新都会更新整个索引,并且总是有一个 0 索引条件......也许?)
  • 我认为这是 Google Sheets API 中的一个错误。如果您有 N 条条件格式规则,则 batchUpdate 请求仅允许您删除 (N-1)/2 个向下取整的规则。我创建了一个问题here

标签: google-sheets google-api google-sheets-api google-sheets-conditionalformatting


【解决方案1】:

这个解决方案怎么样?在这个方案中,你的问题可以通过 2 次 API 请求来解决。

1。从电子表格上的工作表中检索所有条件格式。

sheets.spreadsheets.get 用于这种情况。

请求:

GET https://sheets.googleapis.com/v4/spreadsheets/### spreadsheet ID ###?ranges=### sheet name ###&fields=sheets%2FconditionalFormats%2Franges%2FsheetId

请输入### spreadsheet ID ###### sheet name ###

回应:

此响应检索条件格式的数量。这用于删除条件格式。

{"sheets": [{"conditionalFormats": [
  {"ranges": [{"sheetId": #####}]},
  {"ranges": [{"sheetId": #####}]}
]}]}

2。删除所有条件格式。

sheets.spreadsheets.batchUpdate 用于这种情况。

请求:

POST https://sheets.googleapis.com/v4/spreadsheets/### spreadsheet ID ###:batchUpdate

请求正文:

这里,index 表示上述GET 方法检索到的条件格式的数量。例如,当工作表中有2个条件格式时,requests的长度为2。下面的requests[0]表示sheets.conditionalFormats[0]如上图。

{"requests": [
  {"deleteConditionalFormatRule": {"sheetId": #####, "index": 0}},
  {"deleteConditionalFormatRule": {"sheetId": #####, "index": 1}}
]}

请输入### spreadsheet ID ###sheetId

注意:

  • 为了使用上述 API,您可以检索访问令牌。
  • 因为删除工作表上的所有条件格式是目的,所以从电子表格中检索到的信息是必要的最低限度。

参考资料:

如果我误解了你的问题,我很抱歉。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多