2016-04-29 21 views
0

ユーザーがテーブル行にデータを入力した後にGoogleスプレッドシートの行をロックするスクリプトの開発を手伝うことができます。Googleスプレッドシートの行ロック機能

ケースの説明:

私はスプレッドシートテーブルを持っています。この表は、多くのユーザーがデータを入力するために使用されます。私は、異なる用途が他人によって入力されたデータを変更できないことを確かめる必要があります。各行に特別な「ロック」ボタンがある場合の最良の方法です。だから、ユーザーがテーブルの行にすべての情報を入力したとき、彼は他のユーザーによるデータ変更を防ぐために "ロック"ボタンを押すことができます。私は、ユーザが入力したデータをある程度の時間をかけて変更できることを望むだけでなく、例えば少なくとも30分間は行をロックしています。

管理者として、スプレッドシート表のデータを変更できるようにしたいと考えています。

ありがとうございました。

答えて

0

おそらく、Googleスプレッドシートの保護された範囲機能をロックとして使用できます。人物がデータを書きたいときは、シートをプライベートに設定してから、公開します。人物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"] 
関連する問題