gspread 保护表,某些单元格除外

Posted

技术标签:

【中文标题】gspread 保护表,某些单元格除外【英文标题】:gspread protect sheet except certain cells 【发布时间】:2021-08-26 00:17:43 【问题描述】:

我正在使用 pythons gspread 库。 到目前为止,它已经给了我我所需要的东西,但我在这个问题上遇到了困难: 除了通过pythons gspread某些单元格之外,如何做相当于保护表的功能?

例如我想保护整个工作表(不仅仅是一个范围),除了特定范围(以 A1 为例)。

我可以毫无问题地保护一个范围,但不保护这个受保护的范围是我被难住的地方。

知道怎么做吗?

谢谢

【问题讨论】:

【参考方案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”外的所有单元格都受到保护。

参考资料:

batch_update(body) AddProtectedRangeRequest

【讨论】:

以上是关于gspread 保护表,某些单元格除外的主要内容,如果未能解决你的问题,请参考以下文章

使用vb.net保护excel中的单元格

在excel里利用vba怎么对指定单元格,或区域单元格保护

VBA 中怎么只保护指定的单元格或者列

使用 Python 的时间戳更新 Googlesheet 单元格

VBA 锁定有内容的单元格

VBA 事件 - 如果选中,则解锁受保护工作表中的单元格