JAA-ATS-Tool / setup_google.py
saitejatirunagari's picture
Initial commit: JAA ATS Tool — PM job search + AI assessment + ATS resume gen
7ff6662
Raw
History Blame
4.65 kB
"""
setup_google.py - One-time Google API setup for Job Automation Agent.
Run: python setup_google.py
"""
import os, sys, json, webbrowser
from pathlib import Path
def main():
print()
print("=" * 58)
print(" Google Sheets + Drive Setup - Job Automation Agent")
print("=" * 58)
print()
print("This connects the agent to your Google Sheet:")
print(" https://docs.google.com/spreadsheets/d/1Ehxt3eortehbtySdtgcSrMhCqmxIMUAmvRqSkII0HJk")
print()
print("TWO OPTIONS:")
print(" A [RECOMMENDED] Service Account - no browser needed, best for automation")
print(" B OAuth2 - browser login once, simpler setup")
print()
choice = input("Choose (A/B): ").strip().upper()
if choice == "A":
setup_service_account()
elif choice == "B":
setup_oauth()
else:
print("Invalid. Run again and choose A or B.")
def setup_service_account():
print()
print("-" * 56)
print(" OPTION A: Service Account Setup")
print("-" * 56)
print()
print("Steps:")
print(" 1. Go to: https://console.cloud.google.com")
print(" 2. Create or select a project")
print(" 3. Enable 'Google Sheets API' and 'Google Drive API'")
print(" 4. Go to IAM & Admin -> Service Accounts")
print(" 5. Create a new Service Account (any name)")
print(" 6. Click the account -> Keys tab -> Add Key -> JSON")
print(" 7. Download the JSON file")
print(" 8. Rename it to: google_credentials.json")
print(f" 9. Place it here: {os.path.abspath('.')}")
print(" 10. Share your Google Sheet with the service account email")
print(" (the client_email field in the JSON)")
print()
webbrowser.open("https://console.cloud.google.com/iam-admin/serviceaccounts")
input("Press Enter after placing google_credentials.json here...")
if Path("google_credentials.json").exists():
with open("google_credentials.json") as f:
data = json.load(f)
email = data.get("client_email", "")
print()
print(" Credentials file found!")
print(f" Service account email: {email}")
print()
print(" IMPORTANT - Share your Google Sheet with this email as Editor:")
sheet_id = os.getenv("GOOGLE_SHEET_ID", "1Ehxt3eortehbtySdtgcSrMhCqmxIMUAmvRqSkII0HJk")
print(f" Sheet: https://docs.google.com/spreadsheets/d/{sheet_id}/edit")
print(f" -> Click Share -> Add '{email}' as Editor")
print()
input("Press Enter after sharing the sheet...")
test_connection()
else:
print("ERROR: google_credentials.json not found. Please try again.")
def setup_oauth():
print()
print("-" * 56)
print(" OPTION B: OAuth2 Setup")
print("-" * 56)
print()
print("Steps:")
print(" 1. Go to: https://console.cloud.google.com")
print(" 2. Create or select a project")
print(" 3. Enable 'Google Sheets API' and 'Google Drive API'")
print(" 4. Go to APIs & Services -> Credentials")
print(" 5. Create OAuth 2.0 Client ID -> Desktop App")
print(" 6. Download JSON -> rename to: google_oauth_client.json")
print(f" 7. Place it here: {os.path.abspath('.')}")
print()
webbrowser.open("https://console.cloud.google.com/apis/credentials")
input("Press Enter after placing google_oauth_client.json here...")
if Path("google_oauth_client.json").exists():
print(" OAuth client file found! Starting browser login...")
test_connection()
else:
print("ERROR: google_oauth_client.json not found. Please try again.")
def test_connection():
print()
print("Testing Google connection...")
try:
from src.gsheets import _get_client, get_sheet_url
from dotenv import load_dotenv
load_dotenv()
sheet_id = os.getenv("GOOGLE_SHEET_ID", "1Ehxt3eortehbtySdtgcSrMhCqmxIMUAmvRqSkII0HJk")
client = _get_client()
sh = client.open_by_key(sheet_id)
print(f" Connected to Google Sheets!")
print(f" Sheet name: {sh.title}")
print(f" Sheet URL: {get_sheet_url(sheet_id)}")
print()
print("Setup complete! Run python main.py to start the agent.")
except Exception as e:
print(f" Connection failed: {e}")
print()
print("Troubleshooting:")
print(" - Ensure credentials file is correct")
print(" - Ensure Google Sheets API + Drive API are enabled")
print(" - For service accounts: share the sheet with the service account email")
if __name__ == "__main__":
from dotenv import load_dotenv
load_dotenv()
main()