python 3.8 上的 gsheet batch_update 是否存在问题?

Esi*_*ngs 3 python google-sheets python-3.x gspread google-sheets-api

按照以下问题和解决方案,如何使用 python gspreadsheet 重置所有行和列数据,我有以下确切的代码

requests = {"requests": [{"updateCells": {"range": {"sheetId": worksheet._properties['sheetId']}, "fields": "*"}}]}
res = spreadsheet.batch_update(requests)
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误

File "/root/.local/lib/python3.8/site-packages/gspread/models.py", line 1171, in batch_update data = [ File "/root/.local/lib/python3.8/site-packages/gspread/models.py", line 1172, in <listcomp> dict(vr, range=absolute_range_name(self.title, vr['range'])) TypeError: string indices must be integers
Run Code Online (Sandbox Code Playgroud)

有谁有过这样的经历吗?你是如何解决的?

Tan*_*ike 5

修改要点:

  • 虽然不幸的是,我无法在您的问题中看到您的整个脚本,但从您的错误消息来看,我认为您的问题可能是您正在使用batch_updategspread.models.Worksheet 类中的方法。因为在我的环境下,当我测试下面的脚本时,我和你确认了同样的错误。

      worksheet = spreadsheet.worksheet(sheetName)
      requests = {"requests": [{"updateCells": {"range": {"sheetId": worksheet._properties['sheetId']}, "fields": "*"}}]}
      res = worksheet.batch_update(requests)
      print(res)
    
    Run Code Online (Sandbox Code Playgroud)
  • 在这种情况下,请使用batch_updategspread.models.Spreadsheet 类中的方法。

为了解决这个问题,下面的示例脚本怎么样?

示例脚本:

client = gspread.authorize(credentials)
spreadsheetId = "###"  # Please set Spreadsheet ID.
sheetName = "###"  # Please set sheet name.
spreadsheet = client.open_by_key(spreadsheetId)
worksheet = spreadsheet.worksheet(sheetName)
requests = {"requests": [{"updateCells": {"range": {"sheetId": worksheet._properties['sheetId']}, "fields": "*"}}]}
res = spreadsheet.batch_update(requests)
Run Code Online (Sandbox Code Playgroud)
  • 请设置您的授权脚本。

笔记:

  • 我使用 python 3.8.3 和 gspread 3.6.0 测试了上面的脚本,我可以确认该脚本有效。

参考: