''Worksheet'对象没有属性'spreadsheets'

问题描述 投票:-1回答:1

这是我第一次使用Google Sheets API。因此,我正在尝试加粗Google工作表的第一行。但是在执行此操作时出现错误''Worksheet'对象没有属性'spreadsheets'。我已经在下面提到了代码。请指出我在做什么错。

import gspread
from oauth2client.service_account import ServiceAccountCredentials
from pprint import pprint
scope = ["https://spreadsheets.google.com/feeds", "https://www.googleapis.com/auth/spreadsheets",
         "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive"]
creds = ServiceAccountCredentials.from_json_keyfile_name("credentials.json",scope)

client = gspread.authorize(creds)
sheet = client.open("SheetsAPI Practice").sheet1

req = { "repeatCell": {
        "range": {
            "sheetId": 0,
            "startRowIndex": 0,
            "endRowIndex": 1
        },
        "cell": {
            "userEnteredFormat": {
                "textFormat": {
                    "bold": True        
                }
            }
        },
        "fields": "userEnteredFormat.textFormat.bold"
    }
}

sheet.spreadsheets().batchUpdate(spreadsheetId=sheet.id,body=req).execute()

此行发生错误-

sheet.spreadsheets()。batchUpdate(spreadsheetId = sheet.id,body = req).execute()

python excel google-sheets-api
1个回答
0
投票
  • 您想在Sheets API中使用batchUpdate方法。
  • 您想通过gspread和python实现此目的。
  • 您已经能够获取和放入Google Spreadsheet的值。

如果我的理解正确,那么这个答案如何?请认为这只是几个可能的答案之一。

修改点:

  • 在gspread中,spreadsheets()中没有client.open("SheetsAPI Practice").sheet1的方法。在您的脚本中,您尝试将gspread与python的googleapis方法结合使用。错误消息的原因是这样。
  • gspread具有在Sheets API中使用batchUpdate的方法。因此,当client = gspread.authorize(creds)可以用于您要使用的Google电子表格时,您可以使用它。
  • 您的请求正文需要修改。当对批处理更新方法使用req时,请放入{"requests": [req]}之类的数组。

当以上几点反映到您的脚本时,它将变成如下。

修改的脚本:

从:
sheet = client.open("SheetsAPI Practice").sheet1

req = { "repeatCell": {
        "range": {
            "sheetId": 0,
            "startRowIndex": 0,
            "endRowIndex": 1
        },
        "cell": {
            "userEnteredFormat": {
                "textFormat": {
                    "bold": True
                }
            }
        },
        "fields": "userEnteredFormat.textFormat.bold"
    }
}

sheet.spreadsheets().batchUpdate(spreadsheetId=sheet.id,body=req).execute()
至:
spreadsheet = client.open("SheetsAPI Practice")
req = {
    "requests": [
      {
          "repeatCell": {
              "range": {
                  "sheetId": 0,
                  "startRowIndex": 0,
                  "endRowIndex": 1
              },
              "cell": {
                  "userEnteredFormat": {
                      "textFormat": {
                          "bold": True
                      }
                  }
              },
              "fields": "userEnteredFormat.textFormat.bold"
          }
      }
    ]
}
spreadsheet.batch_update(req)
  • 运行此修改后的脚本时,第一行的文本变为粗体。

注意:

  • 此修改后的脚本假设服务帐户可以使用Google Spreadsheet。请注意这一点。

参考:

如果我误解了你的问题,而这不是你想要的方向,我深表歉意。

© www.soinside.com 2019 - 2024. All rights reserved.