gpsread Google 스프레드 시트는 경고와 함께 워크 시트를 보호합니다.
내가 사용하려고 gspread
워크 시트를 보호하고 그들이 편집기 경우에도 변경을하려고하는 경우 사용자에게 경고하기 위해 라이브러리를.
Google 스프레드 시트에서는 '이 범위를 수정할 때 경고 표시'라고합니다.
Gpsread에는 add_protected_range
여기 에 기능 이 있습니다. gpsread를 통해 실행 worksheet.add_protected_range('A1:J10', warning_only=True)
하고 오류가 발생합니다.
gspread.exceptions.APIError : { 'code': 400, 'message': '잘못된 요청 [0] .addProtectedRange : ProtectedRange는 warningOnly입니다. 편집자를 설정할 수 없습니다. ','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)
- 위 스크립트를 실행하면 "Sheet1"의 "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"의 셀을 편집하면 경고 화면이 열립니다.
참조 :
- gspread의 models.py
- batch_update (본문)
- ProtectedRange