read_sheet.py
entry point
31 steps
Google Auth
Google Sheets
cli: __main__ guard
cli: argparse
This automation connects to Google Sheets to read specific lead data from a designated spreadsheet or tab. It then saves this lead information into a separate file for future use.
Flow
Click any step to see details
graph TB
subgraph n_read_sheet_extract_sheet_id["extract_sheet_id()"]
n_read_sheet_32{"if '/d/' in url"}:::decision
n_read_sheet_33[["Transform: .split()"]]:::transform
n_read_sheet_33[["Transform: .split()"]]:::transform
n_read_sheet_32 --> n_read_sheet_33
n_read_sheet_33 --> n_read_sheet_33
end
subgraph n_read_sheet_get_credentials["get_credentials()"]
n_read_sheet_53{"if os.path.exists('token.json')"}:::decision
n_read_sheet_54{"try/except block"}:::decision
n_read_sheet_55[/"File: open('token.json')"/]:::fileio
n_read_sheet_56[/"File: json.load()"/]:::fileio
n_read_sheet_59(["Output: print()"]):::output
n_read_sheet_62{"if not creds or not creds.valid"}:::decision
n_read_sheet_63{"if creds and creds.expired and creds.refresh_token"}:::decision
n_read_sheet_71[/"File: open('token.json')"/]:::fileio
n_read_sheet_53 --> n_read_sheet_54
n_read_sheet_54 --> n_read_sheet_55
n_read_sheet_55 --> n_read_sheet_56
n_read_sheet_56 --> n_read_sheet_59
n_read_sheet_59 --> n_read_sheet_62
n_read_sheet_62 --> n_read_sheet_63
n_read_sheet_63 --> n_read_sheet_71
end
subgraph n_read_sheet_read_google_sheet["read_google_sheet()"]
n_read_sheet_88{"try/except block"}:::decision
n_read_sheet_90["API: gspread.authorize()"]:::api
n_read_sheet_97{"if worksheet_name"}:::decision
n_read_sheet_105(["Output: print()"]):::output
n_read_sheet_105[["Transform: len()"]]:::transform
n_read_sheet_109(["Output: print()"]):::output
n_read_sheet_109[["Transform: str()"]]:::transform
n_read_sheet_88 --> n_read_sheet_90
n_read_sheet_90 --> n_read_sheet_97
n_read_sheet_97 --> n_read_sheet_105
n_read_sheet_105 --> n_read_sheet_105
n_read_sheet_105 --> n_read_sheet_109
n_read_sheet_109 --> n_read_sheet_109
end
subgraph n_read_sheet_save_leads["save_leads()"]
n_read_sheet_124{"if not leads"}:::decision
n_read_sheet_125(["Output: print()"]):::output
n_read_sheet_134[/"File: open()"/]:::fileio
n_read_sheet_135[/"File: json.dump()"/]:::fileio
n_read_sheet_137(["Output: print()"]):::output
n_read_sheet_124 --> n_read_sheet_125
n_read_sheet_125 --> n_read_sheet_134
n_read_sheet_134 --> n_read_sheet_135
n_read_sheet_135 --> n_read_sheet_137
end
subgraph n_read_sheet_main["main()"]
n_read_sheet_151{"if leads"}:::decision
n_read_sheet_153{"if filename"}:::decision
n_read_sheet_155(["Output: print()"]):::output
n_read_sheet_156(["Output: print()"]):::output
n_read_sheet_156[["Transform: len()"]]:::transform
n_read_sheet_157{"if leads"}:::decision
n_read_sheet_158(["Output: print()"]):::output
n_read_sheet_158[["Transform: .join()"]]:::transform
n_read_sheet_151 --> n_read_sheet_153
n_read_sheet_153 --> n_read_sheet_155
n_read_sheet_155 --> n_read_sheet_156
n_read_sheet_156 --> n_read_sheet_156
n_read_sheet_156 --> n_read_sheet_157
n_read_sheet_157 --> n_read_sheet_158
n_read_sheet_158 --> n_read_sheet_158
end
click n_read_sheet_32 call showStepDetail("read_sheet.py", 32)
click n_read_sheet_33 call showStepDetail("read_sheet.py", 33)
click n_read_sheet_33 call showStepDetail("read_sheet.py", 33)
click n_read_sheet_53 call showStepDetail("read_sheet.py", 53)
click n_read_sheet_54 call showStepDetail("read_sheet.py", 54)
click n_read_sheet_55 call showStepDetail("read_sheet.py", 55)
click n_read_sheet_56 call showStepDetail("read_sheet.py", 56)
click n_read_sheet_59 call showStepDetail("read_sheet.py", 59)
click n_read_sheet_62 call showStepDetail("read_sheet.py", 62)
click n_read_sheet_63 call showStepDetail("read_sheet.py", 63)
click n_read_sheet_71 call showStepDetail("read_sheet.py", 71)
click n_read_sheet_88 call showStepDetail("read_sheet.py", 88)
click n_read_sheet_90 call showStepDetail("read_sheet.py", 90)
click n_read_sheet_97 call showStepDetail("read_sheet.py", 97)
click n_read_sheet_105 call showStepDetail("read_sheet.py", 105)
click n_read_sheet_105 call showStepDetail("read_sheet.py", 105)
click n_read_sheet_109 call showStepDetail("read_sheet.py", 109)
click n_read_sheet_109 call showStepDetail("read_sheet.py", 109)
click n_read_sheet_124 call showStepDetail("read_sheet.py", 124)
click n_read_sheet_125 call showStepDetail("read_sheet.py", 125)
click n_read_sheet_134 call showStepDetail("read_sheet.py", 134)
click n_read_sheet_135 call showStepDetail("read_sheet.py", 135)
click n_read_sheet_137 call showStepDetail("read_sheet.py", 137)
click n_read_sheet_151 call showStepDetail("read_sheet.py", 151)
click n_read_sheet_153 call showStepDetail("read_sheet.py", 153)
click n_read_sheet_155 call showStepDetail("read_sheet.py", 155)
click n_read_sheet_156 call showStepDetail("read_sheet.py", 156)
click n_read_sheet_156 call showStepDetail("read_sheet.py", 156)
click n_read_sheet_157 call showStepDetail("read_sheet.py", 157)
click n_read_sheet_158 call showStepDetail("read_sheet.py", 158)
click n_read_sheet_158 call showStepDetail("read_sheet.py", 158)
classDef api fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
classDef fileio fill:#dcfce7,stroke:#16a34a,color:#14532d
classDef dbop fill:#f3e8ff,stroke:#9333ea,color:#3b0764
classDef decision fill:#ffedd5,stroke:#ea580c,color:#7c2d12
classDef output fill:#f3f4f6,stroke:#6b7280,color:#1f2937
classDef transform fill:#ccfbf1,stroke:#0d9488,color:#134e4a
classDef entry fill:#dcfce7,stroke:#16a34a,stroke-width:3px,color:#14532d
classDef compact fill:#f0f4ff,stroke:#6366f1,color:#312e81,stroke-width:2px
API Call
File I/O
Database
Decision
Output
Transform
All Steps
Step Detail
Select a step from the diagram or list to see its details.
Services
- Google Auth (google.oauth2)
- Google Sheets (gspread)
Secrets
- GOOGLE_APPLICATION_CREDENTIALS
Imports
External
- argparse
- datetime
- dotenv
- google.auth.transport.requests
- google.oauth2.credentials
- google_auth_oauthlib.flow
- gspread
- json
- os
- pickle
- sys