3 from types import SimpleNamespace
4 from google.auth.transport.requests import Request
5 from googleapiclient.discovery import build
12 sheets_create_folder, sheets_create, spreadsheet_update_data,
13 sheets_create_for_puzzle
16 if 'GSHEETS_PICKLE_BASE64' not in os.environ:
17 print("Error. Need GSHEETS_PICKLE_BASE64 in environment")
20 gsheets_pickle_base64 = os.environ['GSHEETS_PICKLE_BASE64']
21 gsheets_pickle = base64.b64decode(gsheets_pickle_base64)
22 gsheets_creds = pickle.loads(gsheets_pickle)
25 if gsheets_creds.valid:
26 print("Loaded valid GSheets credentials from environment")
28 gsheets_creds.refresh(Request())
29 gsheets_pickle = pickle.dumps(gsheets_creds)
30 gsheets_pickle_base64_bytes = base64.b64encode(gsheets_pickle)
31 gsheets_pickle_base64 = gsheets_pickle_base64_bytes.decode('us-ascii')
32 print("Refreshed GSheets credentials to be put into environment:")
33 print("GSHEETS_PICKLE_BASE64={}".format(gsheets_pickle_base64))
35 service = build('sheets',
37 credentials=gsheets_creds,
38 cache_discovery=False)
39 sheets = service.spreadsheets()
40 service = build('drive',
42 credentials=gsheets_creds,
43 cache_discovery=False)
44 files = service.files()
45 permissions = service.permissions()
47 turb = SimpleNamespace()
50 turb.permissions = permissions
52 folder_id="1ImWL0g50HSwRHC1UjJvYTHhi1_RsPJrI"
53 spreadsheet_id="1sO4NWDmUDa8H2_lDNsgXz-5Gy6Qr55trV_-J9dLyIjA"
56 folder_id = sheets_create_folder(turb, "sheet-testing")
57 print("Created folder with folder_id=\"{}\"".format(folder_id))
59 if not spreadsheet_id:
61 "name": "Test puzzle",
62 "url": "https://cworth.org",
63 "channel_url": "slack://something-or-other",
65 spreadsheet = sheets_create_for_puzzle(turb, puzzle, folder_id)
66 spreadsheet_id = spreadsheet['id']
67 print("Created spreadsheet with spreadsheet_id=\"{}\"".format(
70 spreadsheet_update_data(turb, spreadsheet_id, 'B2:B2', "B2")