python - “工作表”对象没有属性“电子表格”
问题描述
这是我第一次使用 google sheet api。所以,我试图加粗谷歌工作表的第一行。但是这样做时出现错误“工作表”对象没有属性“电子表格”。我已经提到了下面的代码。请指出我做错了什么。
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()
解决方案
- 您想使用 Sheets API 中的 batchUpdate 方法。
- 您想使用 gspread 和 python 来实现这一点。
- 您已经能够获取和放置 Google 电子表格的值。
如果我的理解是正确的,这个答案怎么样?
修改点:
- 在 gspread 中,没有
spreadsheets()
in的方法client.open("SheetsAPI Practice").sheet1
。在您的脚本中,您正在尝试将 python 的 googleapis 方法与 gspread 一起使用。错误消息的原因是这样的。 - gspread 具有在 Sheets API 中使用 batchUpdate 的方法。所以你可以使用这个,什么时候
client = gspread.authorize(creds)
可以用于你想要使用的 Google 电子表格。 - 您的请求正文需要修改。当您使用
req
batchUpdate 方法时,请放入数组中,如{"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 电子表格。请注意这一点。
参考:
推荐阅读
- jenkins - 如何在 InfluxDB 中获取 Jenkins changelog_data
- python - 从 Google Meets 会议中检索包含所有参与者的列表的最佳方式是什么?可能吗?
- python - 将 Selenium Chrome 网络驱动程序附加到已打开的浏览器窗口?
- amazon-web-services - 未找到名为假设角色与网络身份的凭据
- react-native - 如何在 FlatList 中单击按钮时设置 TextInput 的值?
- java - 为什么 testng.xml 中提到的组名有很高的偏好?
- javascript - 如何在 HTML 文件中包含 npm 包?
- swift - RealityKit – 如何防止实体重叠?
- c# - 显示对其他网格的控制
- reactjs - 反应传单 onMoveEnd 导致错误:“超出最大更新深度”