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的答案:

warningOnlytrue时,不能使用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”中编辑单元格时,将打开警告屏幕。

参考文献: