【问题标题】:gspread protect sheet except certain cellsgspread 保护表,某些单元格除外
【发布时间】:2021-08-26 00:17:43
【问题描述】:
我正在使用 pythons gspread 库。
到目前为止,它已经给了我我所需要的东西,但我在这个问题上遇到了困难:
除了通过pythons gspread某些单元格之外,如何做相当于保护表的功能?
例如我想保护整个工作表(不仅仅是一个范围),除了特定范围(以 A1 为例)。
我可以毫无问题地保护一个范围,但不保护这个受保护的范围是我被难住的地方。
知道怎么做吗?
谢谢
【问题讨论】:
标签:
python
google-sheets
google-sheets-api
protected
gspread
【解决方案1】:
我相信你的目标和你目前的情况如下。
- 您想保护 Google 电子表格中的工作表。
- 在这种情况下,您只想取消保护工作表的单元格“A1”。
- 您想使用 python 的 gspread 来实现。
- 您已经能够使用 Sheets API 为 Google 电子表格获取和输入值。
我认为在你的情况下,可以使用batchUpdate方法的AddProtectedRangeRequest。
示例脚本:
client = gspread.authorize(credentials) # Pleaase use your "client" here.
spreadsheetId = "###" # Please set the Spreadsheet ID.
sheetName = "Sheet1" # Please set the sheet name you want to protect.
emailAddress = "###" # Please set your email address.
spreadsheet = client.open_by_key(spreadsheetId)
sheetId = spreadsheet.worksheet(sheetName).id
body = {
"requests": [
{
"addProtectedRange": {
"protectedRange": {
"range": {
"sheetId": sheetId
},
"unprotectedRanges": [
{
"sheetId": sheetId,
"startRowIndex": 0,
"endRowIndex": 1,
"startColumnIndex": 0,
"endColumnIndex": 1
}
],
"editors": {
"domainUsersCanEdit": False,
"users": [emailAddress]
},
"warningOnly": False
}
}
}
]
}
spreadsheet.batch_update(body)
- 运行此脚本时,
sheetName 工作表中除单元格“A1”外的所有单元格都受到保护。
参考资料: