import os.path
import os
+from google.auth.transport.requests import Request
from googleapiclient.discovery import build
-# If modifying these scopes, delete the file token.pickle.
-SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
+TEMPLATE_SHEET_ID = "1drSoyrE4gM3JaGweDkOybwXWdKPIDTfUmB1gQCYS3Uw"
+TEMPLATE_SHEET_SHEETS = ["Text", "Grid"]
turbot_deploy_dir = os.environ.get('TURBOT_DEPLOY_DIR', '.')
TOKEN_FILE = "{}/.gsheets-token.pickle".format(turbot_deploy_dir)
"""
global creds
- # The file token.pickle stores token from last login/refresh
+ # The token file stores token from last login/refresh
if not creds:
if os.path.exists(TOKEN_FILE):
with open(TOKEN_FILE, 'rb') as token:
creds = pickle.load(token)
+ # Refresh credentials if necessary
+ if creds and not creds.valid:
+ creds.refresh(Request())
+
# If there are no (valid) credentials available, give up
if not creds or not creds.valid:
current_app.logger.error("No token found in {}".format(TOKEN_FILE))
return None
service = build('sheets', 'v4', credentials=creds)
+ sheets = service.spreadsheets()
+
+ # Create a new spreadsheet
+ spreadsheet_body = {
+ 'properties': {
+ 'title': name
+ }
+ }
+
+ new_sheet = sheets.create(body=spreadsheet_body).execute()
+ spreadsheet_url = new_sheet["spreadsheetUrl"]
+ spreadsheet_id = new_sheet["spreadsheetId"]
+
+ # Copy some sheets from the Template spreadsheet
- # Create a new sheet
- spreadsheet_body = {}
+ response = sheets.get(spreadsheetId=TEMPLATE_SHEET_ID).execute()
- request = service.spreadsheets().create(body=spreadsheet_body)
- response = request.execute()
+ for sheet in response["sheets"]:
+ if sheet["properties"]["title"] in TEMPLATE_SHEET_SHEETS:
+ sheets.sheets().copyTo(spreadsheetId=TEMPLATE_SHEET_ID,
+ sheetId=sheet["properties"]["sheetId"],
+ body={
+ "destinationSpreadsheetId":
+ spreadsheet_id
+ }).execute()
- return response["spreadsheetUrl"]
+ return spreadsheet_url