+#!/usr/bin/env python3
+
+from types import SimpleNamespace
+from google.auth.transport.requests import Request
+from googleapiclient.discovery import build
+import sys
+import os
+import base64
+import pickle
+
+from sheets import (
+ sheets_create_folder, sheets_create, spreadsheet_update_data,
+ sheets_create_for_puzzle
+)
+
+if 'GSHEETS_PICKLE_BASE64' not in os.environ:
+ print("Error. Need GSHEETS_PICKLE_BASE64 in environment")
+ sys.exit(1)
+
+gsheets_pickle_base64 = os.environ['GSHEETS_PICKLE_BASE64']
+gsheets_pickle = base64.b64decode(gsheets_pickle_base64)
+gsheets_creds = pickle.loads(gsheets_pickle)
+
+if gsheets_creds:
+ if gsheets_creds.valid:
+ print("Loaded valid GSheets credentials from environment")
+ else:
+ gsheets_creds.refresh(Request())
+ gsheets_pickle = pickle.dumps(gsheets_creds)
+ gsheets_pickle_base64_bytes = base64.b64encode(gsheets_pickle)
+ gsheets_pickle_base64 = gsheets_pickle_base64_bytes.decode('us-ascii')
+ print("Refreshed GSheets credentials to be put into environment:")
+ print("GSHEETS_PICKLE_BASE64={}".format(gsheets_pickle_base64))
+
+service = build('sheets',
+ 'v4',
+ credentials=gsheets_creds,
+ cache_discovery=False)
+sheets = service.spreadsheets()
+service = build('drive',
+ 'v3',
+ credentials=gsheets_creds,
+ cache_discovery=False)
+files = service.files()
+permissions = service.permissions()
+
+turb = SimpleNamespace()
+turb.sheets = sheets
+turb.files = files
+turb.permissions = permissions
+
+folder_id="1ImWL0g50HSwRHC1UjJvYTHhi1_RsPJrI"
+spreadsheet_id="1sO4NWDmUDa8H2_lDNsgXz-5Gy6Qr55trV_-J9dLyIjA"
+
+if not folder_id:
+ folder_id = sheets_create_folder(turb, "sheet-testing")
+ print("Created folder with folder_id=\"{}\"".format(folder_id))
+
+if not spreadsheet_id:
+ puzzle={
+ "name": "Test puzzle",
+ "url": "https://cworth.org",
+ "channel_url": "slack://something-or-other",
+ }
+ spreadsheet = sheets_create_for_puzzle(turb, puzzle, folder_id)
+ spreadsheet_id = spreadsheet['id']
+ print("Created spreadsheet with spreadsheet_id=\"{}\"".format(
+ spreadsheet_id))
+
+spreadsheet_update_data(turb, spreadsheet_id, 'B2:B2', "B2")