dongwook-chan's picture
Finished developing back-end
2e9ea78
raw
history blame
2.37 kB
import os.path
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
import pandas as pd
# If modifying these scopes, delete the file token.json.
SCOPES = ["https://www.googleapis.com/auth/spreadsheets"]
# The ID and range of a sample spreadsheet.
# SAMPLE_SPREADSHEET_ID = "1Z3doUDpoUmXs7p4-g7f8q3XZIBhH_Lz2w51bnpUFigw"
SAMPLE_SPREADSHEET_ID = "1NJGhpMsfUySHJcMBNpLTEnt-r5Co6qwRahenIa9D55k"
SERVICE = None
MAX_ROW = 100
QUESTIONS = None
def get_range(range_name: str) -> list[list[str]]:
sheet = SERVICE.spreadsheets()
result = (
sheet.values()
.get(
spreadsheetId=SAMPLE_SPREADSHEET_ID,
range=range_name
)
.execute()
)
values = result.get("values", [])
return values
def load_google_sheets():
global SERVICE, QUESTIONS
"""Shows basic usage of the Sheets API.
Prints values from a sample spreadsheet.
"""
creds = None
# The file token.json stores the user's access and refresh tokens, and is
# created automatically when the authorization flow completes for the first
# time.
if os.path.exists("token.json"):
creds = Credentials.from_authorized_user_file("token.json", SCOPES)
# If there are no (valid) credentials available, let the user log in.
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
"credentials.json", SCOPES
)
creds = flow.run_local_server(port=0)
# Save the credentials for the next run
with open("token.json", "w") as token:
token.write(creds.to_json())
SERVICE = build("sheets", "v4", credentials=creds)
QUESTIONS = pd.DataFrame(get_range(f"Responses!B1:F1"), columns=["Q1", "Q2", "Q3", "Q4", "Q5"])
def get_team_numbers() -> list[str]:
values = get_range(f"Responses!I2:I{MAX_ROW}")
return [int(value[0]) for value in values]
def get_questions_and_answers() -> pd.DataFrame:
columns = ["Q1", "Q2", "Q3", "Q4", "Q5", "Q6", "Q7", "team_number", "email_address", "name"]
answers_values = get_range(f"Responses!B2:K{MAX_ROW}")
df = pd.DataFrame(answers_values, columns=columns)
return df