yunzi7's picture
Parse Mode Response (#3)
11133ef verified
raw
history blame
2.55 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
from googleapiclient.errors import HttpError
from flask import session
# 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
def load_google_sheets():
global SERVICE
"""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)
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 get_team_numbers() -> list[str]:
values = get_range(f"Responses!I2:I{MAX_ROW}")
return [value[0] for value in values]
def get_questions_and_answers() -> list[list[str]]:
question_values = get_range("Responses!B1:F1")
questions = question_values[0]
answers_values = get_range(f"Responses!B2:F{MAX_ROW}")
name_values = get_range(f"Responses!K2:K{MAX_ROW}")
questions_and_answers: list[list[str]] = []
for answers, names in zip(answers_values, name_values):
for question, answer, name in zip(questions, answers, names):
questions_and_answers.append([question, answer, name])
return questions_and_answers