如何解决gpsread Google表格保护工作表出现警告 示例脚本:示例脚本:
我正在尝试使用gspread
库来保护工作表并警告用户,即使他们是编辑者也要进行更改。
在Google表格中,这称为“在编辑此范围时显示警告”
Gpsread具有功能add_protected_range
Here。通过gpsread,我运行worksheet.add_protected_range('A1:J10',warning_only=True)
并收到错误消息
gspread.exceptions.APIError:{'代码':400,'消息':'无效的请求[0] .addProtectedRange:ProtectedRange仅警告。 ','status':'INVALID_ARGUMENT'}
删除warning_only
不会返回任何错误,但是编辑者仍然可以编辑,这不是我的目标。
如何使它工作?
此功能也只能使范围受到保护。有没有办法保护整个工作表?
解决方法
我相信您的目标如下。
- 问题1:用户要在工作表中编辑
A1:J10
单元格时显示警告。当用户编辑受保护范围内的单元格时,您要显示警告屏幕。 - 问题2:您要保护工作表而不是范围。当用户编辑受保护工作表中的单元格时,您要显示警告屏幕。
问题1的答案:
当warningOnly
为true
时,不能使用editors
的属性。但是,当我看到脚本add_protected_range
时,似乎包含了默认编辑器。 Ref我认为这样会发生这种错误。因此,在这种情况下,为了避免这种情况,直接使用batchUpdate方法怎么样?示例脚本如下。
示例脚本:
spreadsheetId = "###" # Please set the Spreadsheet ID.
sheetName = "Sheet1" # Please set the sheet name.
client = gspread.authorize(credentials)
ss = client.open_by_key(spreadsheetId)
sheetId = ss.worksheet(sheetName)._properties['sheetId']
request_body = {
"requests": [
{
"addProtectedRange": {
"protectedRange": {
"range": {
"sheetId": sheetId,"startRowIndex": 0,"endRowIndex": 10,"startColumnIndex": 0,"endColumnIndex": 10
},"warningOnly": True
}
}
}
]
}
res = ss.batch_update(request_body)
- 运行上述脚本时,“表1”的“ A1:J10”单元格受到保护。当用户在受保护范围内编辑单元格时,将打开警告屏幕。
问题2的答案:
在这种情况下,直接使用batchUpdate方法又如何呢?示例脚本如下。
示例脚本:
spreadsheetId = "###" # Please set the Spreadsheet ID.
sheetName = "Sheet1" # Please set the sheet name.
client = gspread.authorize(credentials)
ss = client.open_by_key(spreadsheetId)
sheetId = ss.worksheet(sheetName)._properties['sheetId']
request_body = {
"requests": [
{
"addProtectedRange": {
"protectedRange": {
"range": {
"sheetId": sheetId,},"warningOnly": True
}
}
}
]
}
res = ss.batch_update(request_body)
- 运行上述脚本时,“ Sheet1”的工作表受到保护。当用户在“ Sheet1”中编辑单元格时,将打开警告屏幕。
参考文献:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。