import gspread import json from oauth2client.client import SignedJwtAssertionCredentials from datetime import date, datetime, timedelta def initializeParams(): today = date.today() todayDt = int(today.strftime("%d")) currentMth = int(today.strftime("%m")) currentYr = int(today.strftime("%Y")) TotalDays = 0 def monthName(currentMth): if currentMth == 1: return 'Jan' if currentMth == 2: return 'Feb' if currentMth == 3: return 'Mar' if currentMth == 4: return 'Apr' if currentMth == 5: return 'May' if currentMth == 6: return 'Jun' if currentMth == 7: return 'Jul' if currentMth == 8: return 'Aug' if currentMth == 9: return 'Sep' if currentMth == 10: return 'Oct' if currentMth == 11: return 'Nov' if currentMth == 12: return 'Dec' def LeapYearCalc(year): # Python program to check if the input year is a leap year or not leapYear = 'N' # To get year (integer input) from the user # year = int(input("Enter a year: ")) if (year % 4) == 0: if (year % 100) == 0: if (year % 400) == 0: leapYear = 'Y' else: leapYear = 'N' else: leapYear = 'Y' else: leapYear = 'N' return leapYear def genSpSheets(Year, Month, TtlDays, sh): for i in range(1, int(TtlDays) + 1, 1): ttl = str(Year) + '_' + str(Month) + '_' + str(i) worksheet = sh.add_worksheet(title=ttl, rows="1000", cols="6") LY = LeapYearCalc(currentYr) if (LY == 'Y'): if currentMth in (1, 3, 5, 7, 8, 10, 12): TotalDays = 31 elif currentMth == 2: TotalDays = 29 else: TotalDays = 30 else: if currentMth in (1, 3, 5, 7, 8, 10, 12): TotalDays = 31 elif currentMth == 2: TotalDays = 28 else: TotalDays = 30 MySpreedSheet = str(monthName(currentMth)) + "_" + str(currentYr) + '_sheet1' json_key = json.load(open('/home/pi/SecurityCamera/creds.json')) # json credentials scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive'] credentials = SignedJwtAssertionCredentials(json_key['client_email'], json_key['private_key'].encode(), scope) # get email and key from creds gc = gspread.authorize(credentials) # authenticate with Google try: sh = gc.open(MySpreedSheet) sheet = sh.get_worksheet(int(todayDt) - 1) return sheet except: sh = gc.create(MySpreedSheet) # worksheet = sh.add_worksheet(title="20190901", rows="10000", cols="20") genSpSheets(str(currentYr), str(currentMth), int(TotalDays), sh) sh.del_worksheet(sh.worksheet("Sheet1")) sh.share('Enter Email address of Google Drive here', perm_type='user', role='writer') sheetOpn = gc.open(MySpreedSheet) sheet = sh.get_worksheet(int(todayDt) - 1) return sheet def next_available_row(sheet): str_list = list(filter(None, sheet.col_values(1))) return str(len(str_list) + 1) def insertLogRec(date, filename, fileType, server, fileUrl): sheet = initializeParams() next_row = next_available_row(sheet) index = int(next_row) if next_row == '1': row = ['Date', 'File Name', "File Type", "File stored on", "File URL"] sheet.insert_row(row, index) next_row = '2' index = 2 row = [date, filename, fileType, server, fileUrl] sheet.insert_row(row, index) else: row = [date, filename, fileType, server, fileUrl] sheet.insert_row(row, index)