]> git.cworth.org Git - turbot/blob - turbot/util/sheets-test.py
09a268ed219975121754748f8255042c80e713da
[turbot] / turbot / util / sheets-test.py
1 #!/usr/bin/env python3
2
3 from types import SimpleNamespace
4 from google.auth.transport.requests import Request
5 from googleapiclient.discovery import build
6 import sys
7 import os
8 import base64
9 import pickle
10
11 from sheets import (
12     sheets_create_folder, sheets_create, spreadsheet_update_data,
13     sheets_create_for_puzzle
14 )
15
16 if 'GSHEETS_PICKLE_BASE64' not in os.environ:
17     print("Error. Need GSHEETS_PICKLE_BASE64 in environment")
18     sys.exit(1)
19
20 gsheets_pickle_base64 = os.environ['GSHEETS_PICKLE_BASE64']
21 gsheets_pickle = base64.b64decode(gsheets_pickle_base64)
22 gsheets_creds = pickle.loads(gsheets_pickle)
23
24 if gsheets_creds:
25     if gsheets_creds.valid:
26         print("Loaded valid GSheets credentials from environment")
27     else:
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))
34
35 service = build('sheets',
36                 'v4',
37                 credentials=gsheets_creds,
38                 cache_discovery=False)
39 sheets = service.spreadsheets()
40 service = build('drive',
41                 'v3',
42                 credentials=gsheets_creds,
43                 cache_discovery=False)
44 files = service.files()
45 permissions = service.permissions()
46
47 turb = SimpleNamespace()
48 turb.sheets = sheets
49 turb.files = files
50 turb.permissions = permissions
51
52 folder_id="1ImWL0g50HSwRHC1UjJvYTHhi1_RsPJrI"
53 spreadsheet_id="1sO4NWDmUDa8H2_lDNsgXz-5Gy6Qr55trV_-J9dLyIjA"
54
55 if not folder_id:
56     folder_id = sheets_create_folder(turb, "sheet-testing")
57     print("Created folder with folder_id=\"{}\"".format(folder_id))
58
59 if not spreadsheet_id:
60     puzzle={
61         "name": "Test puzzle",
62         "url": "https://cworth.org",
63         "channel_url": "slack://something-or-other",
64     }
65     spreadsheet = sheets_create_for_puzzle(turb, puzzle, folder_id)
66     spreadsheet_id = spreadsheet['id']
67     print("Created spreadsheet with spreadsheet_id=\"{}\"".format(
68         spreadsheet_id))
69
70 spreadsheet_update_data(turb, spreadsheet_id, 'B2:B2', "B2")