除某些单元格外的 gspread 保护表 示例脚本:参考:

问题描述

我正在使用 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”之外的所有单元格都受到保护。

参考: