谁可以帮助开发一个脚本,在用户向表格行输入数据后锁定google电子表格行。
案例描述:
我有一个电子表格表。许多用户使用此表来输入数据。我需要确保不同的用途不能改变其他人输入的数据。如果每一行都有一个特殊的"锁定"按钮。因此,当用户将所有信息输入到表格行中时,他可以按下"锁定"按钮,以防止其他用户更改数据。此外,我希望用户可以更改他输入的数据但有一些时间限制 - 例如,至少30分钟他锁定了行。
作为管理员,我希望能够更改电子表格表格中的任何数据。
谢谢你的帮助。
答案 0 :(得分:0)
也许你可以使用谷歌电子表格的保护范围功能作为锁。当A人想要写数据时,他将表格设为私有,之后设置为公开。在A人的写作中,如果B人也想写,他会遇到异常,他可以抓住它,等一会儿,稍后再写进去。
class ContextManagerUpdateSheet(object):
def __init__(self, spread_sheet_id, sheet_id):
self.spread_sheet_id = spread_sheet_id
self.sheet_id = sheet_id
# self.end_row_index = end_row_index
# self.end_column_index = ord(end_column_index) - 65
def __enter__(self):
logger.info("set spreadsheet sheet: {sheet_id} protected.")
self.protected_id = set_protected(self.spread_sheet_id, self.sheet_id)
def __exit__(self, *others):
logger.info("release protected spreadsheet sheet: {sheet_id}.")
delete_protected(self.spread_sheet_id, self.protected_id)
def runner():
with ContextManagerUpdateSheet("{google_spread_url}", 0):
from datetime import datetime
print datetime.now().strftime("%Y-%m-%d %H:%M:%s")
data = [["www", "3333"]]
apped_data("{google_spread_url}", 0, data)
---
@retry(googleapiclient.errors.HttpError, 5, 20, logger=logger)
def set_protected(spreadsheet_id, sheet_id):
logger.info("test")
service = get_service_handler()
requests_list = list()
requests_list.append(__protected_info(sheet_id))
body = {
"requests": requests_list
}
resp = service.spreadsheets().batchUpdate(spreadsheetId=spreadsheet_id,
body=body).execute()
return resp["replies"][0]["addProtectedRange"]["protectedRange"]["protectedRangeId"]