साथियो नमस्कारआज में आपको एक ऐसी जादुई गूगल शीट पायथन कोड, गूगल क्लाउड एपीआई व गिटहब की सहायता से तैयार करना सीखाने वाला हूं जो आपको वोल्यूम के साथ ब्रेकआउट वाले स्टॉक्स अपने आप सेलेक्ट करके देगी।यह पूरा कोर्स है जो एकदम फ्री है। इस कोर्स के वीडियोज की प्लेलिस्ट आपको मेरे यूटयूब चैनल महेश चन्द्र कौशिक पर मिल जायेगी। इस प्लेलिस्ट का लिंक निम्न हैः- https://www.youtube.com/playlist?list=PL-X8WTMcEbY-UTbq_OiXsFoiLZbEzxE4Y
आज मैं आपको एक ऐसा तरीका बताने जा रहा हूँ जिससे आप खुद की एक ऐसी 'स्मार्ट गूगल शीट' बना सकते हैं, जो हर शाम बाज़ार बंद होने के बाद खुद-ब-खुद NSE से नया डेटा लाएगी, उसमें से सबसे ज़्यादा वॉल्यूम वाले टॉप 250 असली शेयर छांटेगी, और आपके फॉर्मूले के हिसाब से आपको बेहतरीन स्टॉक्स की लिस्ट निकाल कर दे देगी।
चाहे आपको कोडिंग का 'C' भी न आता हो, इस गाइड को स्टेप-बाय-स्टेप फॉलो करें और आपका अपना रोबोट तैयार हो जाएगा!
स्टेप 1: अपनी गूगल शीट तैयार करना
सबसे पहले हमें एक खाली गूगल शीट चाहिए जहाँ सारा डेटा आएगा।
Google Sheets खोलें और एक नई शीट बनाएँ।
इसमें नीचे '+' पर क्लिक करके दो टैब (Sheet) बनाएँ।
पहले टैब का नाम रखें:
Top 250 Stocksदूसरे टैब का नाम रखें:
Final ListTop 250 Stocks शीट में पहली लाइन (Row 1) में ये हेडिंग्स डाल दें:
A1:
NSE CodeB1:
VolumeC1:
Close Price(कॉलम D से आगे हम 50 डीएमए 100 डीएमए 200 डीएमए सीएआर आदि कुछ फार्मूले लगायेगें जो इस पोस्ट में आगे सीखाये जायेगें अभी आपको अपना पूरा फोकस एनएसई से सबसे ज्यादा वोल्यूम वाले टॉप 250 स्टॉक्स की लिस्ट रोज ऑटोमेटिक निकालने करने पर रखना है।!)
स्टेप 2: गूगल क्लाउड (Google Cloud) से API 'चाबी' लेना
हमारी पायथन स्क्रिप्ट को आपकी शीट में डेटा लिखने के लिए एक सुरक्षित रास्ते की ज़रूरत है। इसके लिए हम एक 'Service Account' (रोबोट) बनाएंगे।
पर जाएँ।Google Cloud Console API Library सर्च बॉक्स में "Google Sheets API" ढूँढें और उसे Enable कर दें।
फिर से सर्च करें "Google Drive API" और उसे भी Enable कर दें।
अब बाएँ मेनू में "Credentials" पर क्लिक करें। ऊपर "+ Create Credentials" पर जाएँ और "Service Account" चुनें।
इसे नाम दें (जैसे:
stock-updater-bot) और Create कर दें।अब सर्विस अकाउंट की लिस्ट में उस नए अकाउंट के Email ID (जो
...iam.gserviceaccount.comजैसा होगा) को कॉपी कर लें।उसी ईमेल पर क्लिक करें, Keys टैब में जाएँ -> Add Key -> Create new key पर क्लिक करें। JSON चुनें और डाउनलोड कर लें। यह आपकी तिजोरी की चाबी है!
ज़रूरी काम: अब अपनी गूगल शीट पर वापस आएँ। ऊपर दाईं ओर Share बटन दबाएं और उस कॉपी की हुई Service Account Email ID को 'Editor' का एक्सेस देकर सेव कर दें।
स्टेप 3: GitHub पर अपना ऑटोमेशन सेट अप करना
अब हम अपने कोड को एक ऐसे सर्वर पर रखेंगे जो रोज़ शाम को अपने आप चलेगा। इसके लिए GitHub (जो बिल्कुल फ्री है) का इस्तेमाल करेंगे।
GitHub.com पर जाकर अपना अकाउंट बनाएँ या लॉगिन करें।
दाएँ कोने में '+' दबाएं और New repository चुनें। नाम दें (जैसे:
NSE-Auto-Sheet) और इसे Private रखें।अब अपनी रिपॉजिटरी की Settings में जाएँ। बाएँ मेनू में नीचे Secrets and variables > Actions पर क्लिक करें।
New repository secret बटन दबाएं। Name में लिखें:
GCP_CREDENTIALS।जो JSON फाइल आपने डाउनलोड की थी, उसे नोटपैड (Notepad) में खोलें, उसका सारा टेक्स्ट कॉपी करें और यहाँ Secret बॉक्स में पेस्ट करके सेव कर दें।
स्टेप 4: पायथन स्क्रिप्ट (Python Script) डालना
अब हम वह जादुई कोड डालेंगे जो NSE के नए सिस्टम से डेटा लाएगा।
रिपॉजिटरी के मुख्य पेज (Code टैब) पर Add file > Create new file पर क्लिक करें।
फाइल का नाम दें:
update_sheet.pyनीचे दिया गया पूरा कोड कॉपी करके उस बॉक्स में पेस्ट कर दें:
import gspread
from oauth2client.service_account import ServiceAccountCredentials
import pandas as pd
import requests
import zipfile
import io
from datetime import datetime, timedelta
import os
import json
# 1. Credentials Setup
creds_json = os.environ.get('GCP_CREDENTIALS')
creds_dict = json.loads(creds_json)
scope = ["https://spreadsheets.google.com/feeds", "https://www.googleapis.com/auth/drive"]
creds = ServiceAccountCredentials.from_json_keyfile_dict(creds_dict, scope)
client = gspread.authorize(creds)
# अपनी गूगल शीट की ID यहाँ डालें (URL के बीच का हिस्सा)
spreadsheet_id = "यहाँ_अपनी_शीट_की_ID_डालें"
worksheet = client.open_by_key(spreadsheet_id).worksheet("Top 250 Stocks")
# 2. NSE UDiFF Data Fetcher
def fetch_bhavcopy_for_date(date_obj):
date_str = date_obj.strftime("%Y%m%d")
url = f"https://nsearchives.nseindia.com/content/cm/BhavCopy_NSE_CM_0_0_0_{date_str}_F_0000.csv.zip"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
}
try:
response = requests.get(url, headers=headers, timeout=15)
if response.status_code == 200:
with zipfile.ZipFile(io.BytesIO(response.content)) as z:
csv_filename = z.namelist()[0]
with z.open(csv_filename) as f:
df = pd.read_csv(f)
sym_col = 'TckrSymb' if 'TckrSymb' in df.columns else 'SYMBOL'
close_col = 'ClsPric' if 'ClsPric' in df.columns else 'CLOSE'
series_col = 'SctySrs' if 'SctySrs' in df.columns else 'SERIES'
vol_col = 'TtlTradgVol'
for c in ['TtlTradgVol', 'TtlTrdQty', 'TotTrdQty', 'TOTTRDQTY']:
if c in df.columns:
vol_col = c
break
# सिर्फ EQ सीरीज और ETFs (LIQUID/BEES) को बाहर करना
if series_col in df.columns:
df = df[df[series_col].astype(str).str.strip() == 'EQ']
filter_keywords = 'BEES|ETF|GOLD|LIQUID|CASE|SILVER|LIQ'
df = df[~df[sym_col].astype(str).str.contains(filter_keywords, case=False, na=False)]
df_top = df.sort_values(by=vol_col, ascending=False).head(250)
return df_top[[sym_col, vol_col, close_col]].values.tolist()
return None
except:
return None
# 3. Execution Logic
date = datetime.now()
data_to_insert = None
fetched_date_str = ""
for i in range(5):
test_date = date - timedelta(days=i)
if test_date.weekday() >= 5: continue
data_to_insert = fetch_bhavcopy_for_date(test_date)
if data_to_insert:
fetched_date_str = test_date.strftime('%d-%b-%Y')
break
# 4. Update Sheet
if data_to_insert:
worksheet.batch_clear(['A2:C251'])
worksheet.update('A2', data_to_insert)
ist_now = (datetime.utcnow() + timedelta(hours=5, minutes=30)).strftime('%d-%b %H:%M')
status_msg = f"Data Date: {fetched_date_str} | Last Update: {ist_now} (IST)"
worksheet.update('K2', [[status_msg]])
print("SUCCESS: Sheet Updated!")
ध्यान दें: कोड में spreadsheet_id की जगह अपनी शीट के URL से ID निकाल कर ज़रूर डालें। फिर Commit changes पर क्लिक करें।
स्टेप 5: टाइमर (Cron) सेट करना
हम इस कोड को रोज़ रात 8:15 बजे चलाएंगे ताकि GitHub के सर्वर पर ट्रैफिक न मिले।
अपने GitHub में Actions टैब पर क्लिक करें।
"set up a workflow yourself" पर क्लिक करें।
नीचे दिया गया कोड पेस्ट करें:
name: Update NSE Stocks to Google Sheet
on:
schedule:
# यह समय 14:45 UTC है, जिसका मतलब भारत में रात 8:15 PM है
- cron: '45 14 * * 1-5'
workflow_dispatch:
jobs:
update-sheet:
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install Libraries
run: pip install gspread oauth2client pandas requests
- name: Run Python Script
env:
GCP_CREDENTIALS: ${{ secrets.GCP_CREDENTIALS }}
run: python update_sheet.py
इसे भी Commit changes कर दें। बस, आपका ऑटोमेशन तैयार है!
यहां तक इस कोर्स की कक्षा 1 थी इससे आगे अगली कक्षा में सीखाया जायेगा इस कक्षा का फ्री वीडियो यूटयूब पर निम्न लिंक पर देख सकते हैं:- https://youtu.be/MnIJ6kx6ww4
क्रमशः..................अगले भाग का वीडियो आने पर इस पोस्ट को आगे अपडेट किया जायेगा।

