问题描述
我正在使用 pythons gspread 库。 到目前为止,它给了我我需要的东西,但我对这个感到困惑: 如何通过pythons gspread做除某些单元格之外的等效保护表?
例如我想保护整个工作表(不仅仅是一个范围),除了特定范围(以 A1 为例)。
我可以毫无问题地保护一个范围,但在该受保护范围内取消保护是我难倒的地方。
知道怎么做吗?
谢谢
解决方法
我相信你的目标和你目前的情况如下。
- 您想保护 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”之外的所有单元格都受到保护。