|
|
from typing import Any, Dict, List |
|
|
|
|
|
from googleapiclient.discovery import build |
|
|
from oauth2client.service_account import ServiceAccountCredentials |
|
|
|
|
|
|
|
|
GoogleResource = Any |
|
|
|
|
|
|
|
|
def authenticate_google_services(gcp_key: str) -> GoogleResource: |
|
|
"""Authenticate and return Google service client.""" |
|
|
scopes = [ |
|
|
"https://www.googleapis.com/auth/forms", |
|
|
"https://www.googleapis.com/auth/drive", |
|
|
] |
|
|
credentials = ServiceAccountCredentials.from_json_keyfile_name( |
|
|
gcp_key, scopes |
|
|
) |
|
|
service = build("forms", "v1", credentials=credentials) |
|
|
return service |
|
|
|
|
|
|
|
|
def get_form(form_id: str, gcp_key: str) -> Dict[str, Any] | Any: |
|
|
"""Fetch and return a specified Google Form.""" |
|
|
service = authenticate_google_services(gcp_key) |
|
|
form = service.forms().get(formId=form_id).execute() |
|
|
return form |
|
|
|
|
|
|
|
|
def get_form_responses( |
|
|
form_id: str, gcp_key: str |
|
|
) -> List[Dict[str, Any]] | Any: |
|
|
"""Fetch and return all responses from a specified Google Form.""" |
|
|
service = authenticate_google_services(gcp_key) |
|
|
results = service.forms().responses().list(formId=form_id).execute() |
|
|
responses = results.get("responses", []) |
|
|
return responses |
|
|
|