Spaces:
Runtime error
Runtime error
File size: 2,370 Bytes
4dd778b 2e9ea78 4dd778b ec7b19d 2e9ea78 4dd778b 2e9ea78 4dd778b 2e9ea78 ec7b19d 4dd778b 2e9ea78 ec7b19d 2e9ea78 ec7b19d 2e9ea78 11133ef 2e9ea78 ec7b19d 2e9ea78 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
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
|