python 3.8 和 gsheet batch_update 有问题吗?

Is there an issue on python 3.8 with gsheet batch_update?

按照以下问题和解决方案,, 我有以下确切代码

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

但我收到以下错误

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

谁有过这样的经历?你是怎么解决的?

修改点:

  • 尽管不幸的是,我在你的问题中看不到你的整个脚本,但从你的错误消息来看,我认为你的问题可能是你在 [=53] 中使用了 batch_update 方法=] gspread.models.Worksheet。因为在我的环境下,我测试下面脚本的时候,跟你确认了同样的错误。

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

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

示例脚本:

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)
  • 请设置您的授权脚本。

注:

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

参考文献: