स्प्रैडशीट मैक्रो विश्लेषण के लिए सबसे आम उपकरण बने हुए हैं. चाहे आप एक्सेल या Google शीट पसंद करते हैं, लाइव सेंट्रल बैंक और आर्थिक संकेतक डेटा को सीधे सेल में खींचना मानों को हाथ से कॉपी करने के बजाय एक स्थिर तालिका को एक स्व-अद्यतन निर्णय सहायता में बदल देता है. यह गाइड आपको दिखाता है कि कैसे FXMacroData को दोनों प्लेटफार्मों से कनेक्ट करेंः एक्सेल के लिए पावर क्वेरी और वीबीए, और Google स्क्रिप्ट शीट के लिए ऐप्स. अंत तक, आपकी परवाह करने वाला प्रत्येक मैक्रो नंबर स्वचालित रूप से ताज़ा हो जाएगा।
आप क्या बनाएंगे
- एक्सेल पावर क्वेरी एक क्वेरी जो किसी भी संकेतक को एक क्लिक के साथ एक संरचित तालिका में ले जाती है
- एक्सेल वीबीए एक मैक्रो जो नामित कक्षों में सीधे मान लिखता है, सूत्रों और चार्ट के लिए तैयार है
- Google Apps स्क्रिप्ट एक स्क्रिप्ट जो शीट्स टैब में पंक्तियाँ लिखती है और समय-संचालित ट्रिगर पर ताज़ा करती है
पूर्व शर्तें
- FXMacroData एपीआई कुंजी पर साइन अप करें /अपना नाम लिखें; मुक्त-स्तरीय कुंजी कई संकेतक अंत बिंदुओं को कवर करती है
- एक्सेल 2016+ (पावर क्वेरी के लिए) या एक्सेल 365/ऑनलाइन पावर क्वेरी विंडोज/मैक पर निर्मित है और ऑनलाइन उपलब्ध है
- गूगल खाता Google शीट्स और Apps Script तक पहुँच वाले किसी भी खाते (कोई अतिरिक्त सॉफ्टवेयर आवश्यक नहीं)
- एक्सेल सूत्रों के साथ बुनियादी परिचितता या Google शीट्स पावर क्वेरी अनुभाग के लिए कोई प्रोग्रामिंग पृष्ठभूमि की आवश्यकता नहीं है
भाग 1 एक्सेल
भाग 1 एक्सेल
एक्सेल लाइव एपीआई डेटा के लिए दो मार्ग प्रदान करता हैः पावर क्वेरी (कोई कोड नहीं, विश्लेषकों के लिए महान) और वीबीए (कोड-संचालित, सबसे अच्छा जब आप विशिष्ट कोशिकाओं में मान लिखने या एक बटन या घटना से तर्क ट्रिगर करने की जरूरत है) ।
चरण 1चरण 1 एपीआई एंडपॉइंट आकार को समझें
प्रत्येक FXMacroData संकेतक एक ही REST पैटर्न का पालन करता है। अमेरिकी नीति दर के लिए अनुरोध इस तरह दिखता हैः
GET https://fxmacrodata.com/api/v1/announcements/usd/policy_rate?api_key=YOUR_API_KEY&start=2020-01-01
JSON प्रतिक्रिया एक के साथ एक सपाट वस्तु है data सरणीः
{
"data": [
{ "date": "2025-03-19", "val": 4.25, "announcement_datetime": "2025-03-19T18:00:00Z" },
{ "date": "2025-01-29", "val": 4.25, "announcement_datetime": "2025-01-29T19:00:00Z" },
{ "date": "2024-12-18", "val": 4.25, "announcement_datetime": "2024-12-18T19:00:00Z" }
]
}
प्रत्येक रिकॉर्ड में एक date (वर्षवर्ष-मम-दद), एक संख्या val, और जहां उपलब्ध हो दूसरा स्तर का UTC announcement_datetime. क्योंकि प्रत्येक संकेतक अंत बिंदु इस आकार को साझा करता है, एक पावर क्वेरी फ़ंक्शन या एक वीबीए सहायक उन सभी की सेवा कर सकता है। एपीआई दस्तावेज. .
- चरण 2
चरण 2 एक्सेल पावर क्वेरीः वेब कनेक्टर के माध्यम से आयात
पावर क्वेरी का निर्माण किया गया है वेब से कनेक्टर किसी भी कोड के बिना किसी भी JSON REST अंत बिंदु का उपभोग कर सकते हैं।
- एक्सेल में, क्लिक करें डेटा → प्राप्त करें डेटा → अन्य स्रोतों से → वेब से. .
-
अपना URL डायलॉग में चिपकाएँ replace
YOUR_API_KEYअपनी वास्तविक कुंजी के साथः
https://fxmacrodata.com/api/v1/announcements/usd/policy_rate?api_key=YOUR_API_KEY&start=2020-01-01 - क्लिक करें ठीक है. पावर क्वेरी नेविगेटर JSON संरचना दिखाते हुए खुलता है.
- क्लिक करें डाटा इसे विस्तारित करने के लिए नेविगेटर में रिकॉर्ड करें, फिर क्लिक करें तालिका में परिवर्तित करें → ठीक है. .
-
का उपयोग करें स्तंभ का विस्तार करें बटन (दोहरे तीर वाला आइकन)
Column1हेडर में घोंसले के रिकॉर्ड को फ्लैट कॉलम में अनपैक करने के लिएःdate,val,announcement_datetime. . - क्लिक करें बंद करें और लोड करें तालिका को एक नई शीट में लिखने के लिए।
सुझावः स्वचालित रूप से ताज़ा करें
लोड तालिका पर राइट-क्लिक करें → तालिका → बाहरी डेटा गुण → सक्षम करें फ़ाइल खोलने पर डेटा ताज़ा करें और एक सेट हर N मिनट में ताज़ा करें अंतराल. आपकी मैक्रो तालिका हर बार जब आप कार्यपुस्तिका खोलते हैं चालू रहेगा.
चरण 3
चरण 3 एक्सेल पावर क्वेरीः पुनः प्रयोज्य फ़ंक्शन के साथ पैरामीटर करें
एक बार जब आप एकल-निर्देशक क्वेरी काम कर रहे हैं, तो इसे पुनः प्रयोज्य एम फ़ंक्शन में बढ़ावा दें ताकि आप वेब कनेक्टर चरणों को दोहराने के बिना किसी भी मुद्रा / संकेतक संयोजन को खींच सकें।
- क्वेरी संपादक में, बाएं पैनल में अपनी क्वेરી पर राइट क्लिक करें → फ़ंक्शन बनाएँ.
- इसे बताओ।
FetchMacroData. - इसके शरीर को नीचे दिए गए एम कोड से बदल दें:
// FetchMacroData — reusable Power Query function
// Parameters: currency (e.g. "usd"), indicator (e.g. "policy_rate"), apiKey, startDate
(currency as text, indicator as text, apiKey as text, startDate as text) =>
let
url = "https://fxmacrodata.com/api/v1/announcements/"
& currency & "/" & indicator
& "?api_key=" & apiKey
& "&start=" & startDate,
raw = Json.Document(Web.Contents(url)),
records = raw[data],
tbl = Table.FromList(records, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
expand = Table.ExpandRecordColumn(tbl, "Column1",
{"date", "val", "announcement_datetime"},
{"Date", "Value", "AnnouncementDatetime"}),
typed = Table.TransformColumnTypes(expand, {
{"Date", type date},
{"Value", type number}
})
in
typed
- फ़ंक्शन संपादक बंद करें. अब एक नया बनाएँ रिक्त क्वेरी प्रत्येक संकेतक के लिए आपको क्या चाहिए:
= FetchMacroData("usd", "inflation", "YOUR_API_KEY", "2022-01-01")
= FetchMacroData("eur", "policy_rate", "YOUR_API_KEY", "2022-01-01")
प्रत्येक क्वेरी अपनी तालिका में लोड होती है. फ़ंक्शन HTTP कॉल, JSON पार्स, कॉलम नाम बदलने और प्रकार रूपांतरण को संभालता है. एक नया संकेतक जोड़ने के लिए, एक खाली क्वेરી जोड़ें कोई कनेक्टर विज़ार्ड की आवश्यकता नहीं है. एपीआई दस्तावेज किसी भी मुद्रा जोड़ी के लिए।
चरण 4
चरण 4 एक्सेल वीबीएः मान सीधे कक्षों में लिखें
VBA बेहतर फिट है जब आप विशिष्ट नामित कक्षों में मानों को रखने की जरूरत है, उन्हें मौजूदा सूत्रों से लिंक, या एक बटन या कार्यपुस्तिका-खुली घटना से ताज़ा करने के लिए ट्रिगर.
VBA संपादक खोलें (Alt+F11), एक नया मॉड्यूल डालें (सम्मिलित करें → मॉड्यूल), और निम्नलिखित चिपकाएं:
Option Explicit
' ─────────────────────────────────────────────────────────────────
' FetchLatestIndicator
' Returns the most recent val for a given currency/indicator.
' Requires a reference to "Microsoft XML, v6.0" (VBA Editor →
' Tools → References → tick "Microsoft XML, v6.0").
' ─────────────────────────────────────────────────────────────────
Function FetchLatestIndicator(currency As String, indicator As String, _
apiKey As String) As Variant
Dim http As New MSXML2.XMLHTTP60
Dim url As String
Dim json As String
Dim dataArr As Variant
Dim parsed As Object
url = "https://fxmacrodata.com/api/v1/announcements/" & _
LCase(currency) & "/" & LCase(indicator) & _
"?api_key=" & apiKey & "&limit=1"
http.Open "GET", url, False
http.setRequestHeader "Accept", "application/json"
http.Send
If http.Status <> 200 Then
FetchLatestIndicator = CVErr(xlErrValue)
Exit Function
End If
' ── Minimal JSON parser (no external library needed) ──────────
' Locate the first "val": number pattern after "data":[{
Dim pos As Long
Dim valStr As String
json = http.responseText
pos = InStr(json, """val"":")
If pos = 0 Then
FetchLatestIndicator = CVErr(xlErrNA)
Exit Function
End If
pos = pos + Len("""val"":")
valStr = Mid(json, pos, 20)
' Trim to the actual number (stop at comma, space, or brace)
valStr = Split(Trim(valStr), ",")(0)
valStr = Split(valStr, "}")(0)
valStr = Trim(valStr)
FetchLatestIndicator = CDbl(valStr)
End Function
' ─────────────────────────────────────────────────────────────────
' RefreshMacroDashboard
' Writes the latest value of several indicators into named cells.
' Define Named Ranges (Formulas → Name Manager) matching the keys
' used in the pairs array below.
' ─────────────────────────────────────────────────────────────────
Sub RefreshMacroDashboard()
Dim apiKey As String
apiKey = "YOUR_API_KEY" ' ← replace with your key
Dim pairs(5, 1) As String
pairs(0, 0) = "usd" : pairs(0, 1) = "policy_rate"
pairs(1, 0) = "eur" : pairs(1, 1) = "policy_rate"
pairs(2, 0) = "gbp" : pairs(2, 1) = "policy_rate"
pairs(3, 0) = "usd" : pairs(3, 1) = "inflation"
pairs(4, 0) = "usd" : pairs(4, 1) = "unemployment"
pairs(5, 0) = "usd" : pairs(5, 1) = "gdp"
Dim i As Integer
Dim val As Variant
Dim nm As String
For i = 0 To 5
val = FetchLatestIndicator(pairs(i, 0), pairs(i, 1), apiKey)
nm = UCase(pairs(i, 0)) & "_" & pairs(i, 1)
On Error Resume Next
ThisWorkbook.Names(nm).RefersToRange.Value = val
On Error GoTo 0
Next i
MsgBox "Dashboard updated — " & Now(), vbInformation, "FXMacroData"
End Sub
इसे बटन पर कैसे कनेक्ट करें
कार्यपत्रक में, पर जाएं सम्मिलित करें → आकृतियाँ, एक गोल आयत खींचें, उस पर राइट क्लिक करें →
मैक्रो असाइन करें → चयन करें RefreshMacroDashboard. एक क्लिक आपके डैशबोर्ड में प्रत्येक संकेतक ताज़ा करता है. आप इसे फ़ाइल पर भी स्वचालित रूप से चला सकते हैं इसे कॉल करके खोलें
Workbook_Open() में ThisWorkbook कोड मॉड्यूल.
भाग 2 GOOGLE SHEETS
भाग 2 गूगल शीट्स
Google Apps Script एक जावास्क्रिप्ट रनटाइम है जो सीधे Google कार्यक्षेत्र में एम्बेडेड है. यह Google के बुनियादी ढांचे पर सर्वर-साइड चलता है, इसलिए स्थापित करने के लिए कुछ भी नहीं है. आप FXMacroData को कॉल करते हैं।
UrlFetchApp और स्प्रैडशीट पर परिणाम लिखें SpreadsheetAppसमय-संचालित ट्रिगर आपको स्वचालित ताज़ा करने का समय निर्धारित करने देते हैं।
चरण 5 Apps स्क्रिप्ट संपादक खोलें
- खुला sheets.google.com और एक नई रिक्त स्प्रेडशीट बनाएँ.
- क्लिक करें एक्सटेंशन → ऐप्स स्क्रिप्ट.
- परियोजना का नाम बदलकर FXMacroData लोडर (ऊपर बाएं क्षेत्र)
- डिफ़ॉल्ट हटाएँ
myFunction()प्लेसहोल्डर
अपनी एपीआई कुंजी सुरक्षित रूप से संग्रहीत करें
जाओ परियोजना सेटिंग्स → स्क्रिप्ट गुण → गुण जोड़ें. एक गुण जोड़ा नामित
FXMACRODATA_API_KEY और अपनी कुंजी को मान के रूप में चिपकाएं. नीचे दिया गया कोड इसे रनटाइम पर पढ़ता है PropertiesService.getScriptProperties() आपकी कुंजी कभी भी स्क्रिप्ट फ़ाइल में नहीं दिखाई देती है।
चरण 6
चरण 6 फ़ाइच हेल्पर और शीट राइटर लिखें
में निम्न कोड चिपकाएँ Code.gs. तीन कार्य फ़ॉलो करना, सामान्य करना और लिखना हैं:
// ── Config ──────────────────────────────────────────────────────
const BASE_URL = 'https://fxmacrodata.com/api/v1';
// List of {currency, indicator} pairs to load.
// Add or remove rows to customise your dashboard.
const INDICATORS = [
{ currency: 'usd', indicator: 'policy_rate' },
{ currency: 'usd', indicator: 'inflation' },
{ currency: 'usd', indicator: 'unemployment' },
{ currency: 'eur', indicator: 'policy_rate' },
{ currency: 'gbp', indicator: 'policy_rate' },
{ currency: 'aud', indicator: 'policy_rate' },
];
// ── Fetch helper with retry ─────────────────────────────────────
/**
* Fetches the latest N records for a currency/indicator pair.
* Retries up to maxRetries times with exponential back-off.
*
* @param {string} currency - e.g. 'usd'
* @param {string} indicator - e.g. 'policy_rate'
* @param {string} apiKey
* @param {number} limit - number of records to return (default 12)
* @param {number} maxRetries
* @returns {Array} array of {date, val, announcement_datetime} objects
*/
function fetchIndicator(currency, indicator, apiKey, limit = 12, maxRetries = 3) {
const url = `${BASE_URL}/announcements/${currency}/${indicator}`
+ `?api_key=${apiKey}&limit=${limit}`;
for (let attempt = 0; attempt < maxRetries; attempt++) {
try {
const resp = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
if (resp.getResponseCode() === 200) {
return JSON.parse(resp.getContentText()).data || [];
}
} catch (e) {
if (attempt < maxRetries - 1) {
Utilities.sleep(Math.pow(2, attempt) * 1000); // 1 s, 2 s, 4 s
}
}
}
return [];
}
// ── Sheet writer ────────────────────────────────────────────────
/**
* Writes all indicator rows to a sheet named 'MacroData'.
* Creates the sheet if it does not exist; clears it on each run
* so stale rows are removed.
*/
function refreshMacroData() {
const apiKey = PropertiesService.getScriptProperties()
.getProperty('FXMACRODATA_API_KEY');
if (!apiKey) {
throw new Error('FXMACRODATA_API_KEY script property is not set.');
}
const ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getSheetByName('MacroData');
if (!sheet) {
sheet = ss.insertSheet('MacroData');
}
sheet.clearContents();
// Header row
const headers = ['Currency', 'Indicator', 'Date', 'Value', 'AnnouncementDatetime'];
sheet.appendRow(headers);
// Style header
const headerRange = sheet.getRange(1, 1, 1, headers.length);
headerRange.setBackground('#1e3a5f');
headerRange.setFontColor('#ffffff');
headerRange.setFontWeight('bold');
// Data rows
INDICATORS.forEach(({ currency, indicator }) => {
const records = fetchIndicator(currency, indicator, apiKey);
records.forEach(r => {
sheet.appendRow([
currency.toUpperCase(),
indicator,
r.date,
r.val,
r.announcement_datetime || ''
]);
});
});
// Auto-resize columns for readability
sheet.autoResizeColumns(1, headers.length);
}
चरण 7
चरण 7 चलाएँ और सत्यापित करें
- क्लिक करें सहेजें संपादक उपकरणपट्टी में आइकन (फ्लॉपी डिस्क)
- चुनें
refreshMacroDataफ़ंक्शन ड्रॉपडाउन में रन बटन (▶) के बगल में। - क्लिक करें भाग जाओ. पहला रन स्प्रेडशीट तक पहुँचने और बाहरी HTTP अनुरोध करने के लिए अनुमति के लिए पूछता है क्लिक करें अनुमतियाँ समीक्षा → अनुमति दें.
- स्प्रिडशीट पर वापस स्विच करें. एक नया टैब कहा जाता है मैक्रोडाटा अब इस तरह की पंक्तियाँ होनी चाहिएः
| मुद्रा | सूचक | तिथि | मूल्य | घोषणा दिनांक समय |
|---|---|---|---|---|
| अमरीकी डालर | नीति_दर | 2025-03-19 | 4.25 | 2025-03-19T18:00:00Z |
| अमरीकी डालर | मुद्रास्फीति | 2025-03-12 | 2.8 | 2025-03-12T12:30:00Z |
| अमरीकी डालर | बेरोजगारी | 2025-03-07 | 4.1 | 2025-03-07T13:30:00Z |
चरण 8
चरण 8 ट्रिगर के साथ स्वचालित ताज़ा करने का समय निर्धारित करें
एक समय-संचालित ट्रिगर कॉल करता है। refreshMacroData बिना किसी मैनुअल क्रिया के एक कार्यक्रम पर।
- Apps स्क्रिप्ट संपादक में, क्लिक करें ट्रिगर बायीं साइडबार में आइकन (घड़ी)
- क्लिक करें + ट्रिगर जोड़ें (नीचे दाएं)
- सेट कौन सा फ़ंक्शन चलाना है चुनें →
refreshMacroData. - सेट घटना स्रोत चुनें → समय-संचालित.
- सेट समय आधारित ट्रिगर का प्रकार चुनें → दिन का टाइमर.
- सेट दिन का समय चुनें → उदाहरण के लिए सुबह 7 बजे 8 बजे (यूरोपीय ओपन से पहले)
- क्लिक करें सहेजें. ट्रिगर ट्रिगर सूची में दिखाई देता है.
सुझावः रिलीज के दिन निगरानी के लिए प्रति घंटा ट्रिगर
उच्च प्रभाव वाले दिनों में अमेरिकी सीपीआई, एनएफपी, या केंद्रीय बैंक के निर्णय पर ट्रिगर स्विच करें
घंटों का टाइमर → हर घंटे इसलिए शीट एपीआई अपडेट होने के तुरंत बाद (आमतौर पर आधिकारिक रिलीज के कुछ सेकंड के भीतर) नई रीडिंग को कैप्चर करती है।
मुद्रास्फीति और
गैर-खेती पगार
अंत बिंदुओं को दूसरे स्तर पर ले जाने के लिए announcement_datetime मूल्य ताकि आप प्रत्येक रीडिंग के प्रकाशन की सटीक तिथि निर्धारित कर सकें।
चरण 9
चरण 9 किसी भी कस्टम फ़ंक्शन के साथ किसी भी सेल में नवीनतम मान खींचें
नीचे दिए गए फलन को में जोड़ें Code.gs यदि आप सीधे सेल सूत्रों में मैक्रो मानों का संदर्भ लेना चाहते हैं जैसे GOOGLEFINANCE() लेकिन केंद्रीय बैंक के आंकड़ों के लिए:
/**
* Custom Sheets function: returns the latest value for a currency/indicator.
*
* Usage in a cell: =FXMD("usd","policy_rate")
*
* @param {string} currency e.g. "usd"
* @param {string} indicator e.g. "policy_rate"
* @customfunction
*/
function FXMD(currency, indicator) {
const apiKey = PropertiesService.getScriptProperties()
.getProperty('FXMACRODATA_API_KEY');
const records = fetchIndicator(currency, indicator, apiKey, 1);
if (!records || records.length === 0) return null;
return records[0].val;
}
सहेजने के बाद, टाइप करें =FXMD("usd","policy_rate") किसी भी सेल में. शीट फ़ंक्शन को कॉल करता है, एपीआई से लेता है, और वर्तमान मान देता है. इसे एक कॉम्पैक्ट सारांश पैनल बनाने के लिए आसन्न कोशिकाओं में मुद्रा लेबल के साथ जोड़ता है.
समर्थित संकेतक
FXMacroData कैटलॉग से कोई भी संकेतक स्लग काम करता है policy_rate,
inflation, unemployment, gdp, pmi,
retail_salesऔर बहुत कुछ।
एपीआई दस्तावेज मुद्रा के अनुसार पूर्ण सूची के लिए, या
एफएक्स डैशबोर्ड सूचकों को दृश्य रूप से देखने के लिए।
संक्षिप्त विवरण
सारांश
आपने FXMacroData को एक्सेल और Google शीट्स दोनों से जोड़ा हैः
- एक्सेल पावर क्वेरी एक पैरामीटर करने योग्य M फ़ंक्शन जो किसी भी सूचक को एक संरचित तालिका में लोड करता है और खुली फ़ाइल पर ताज़ा करता है।
- एक्सेल वीबीए एक मैक्रो जो प्रत्येक सूचक के नवीनतम मान को नामित कक्षों में लिखता है, जिसे एक बटन पर असाइन किया जा सकता है।
- Google Apps स्क्रिप्ट a
refreshMacroData()एक पूर्ण मैक्रोडाटा टैब बनाने के लिए एक फ़ंक्शन, प्लस एक=FXMD()प्रति सेल खोजों के लिए कस्टम सूत्र, दोनों एक समय संचालित ट्रिगर पर स्वचालित रूप से ताज़ा किया।
यहाँ से, अधिक संकेतकों में परतों पर विचार करें उदाहरण के लिए, जोड़ने
मूल मुद्रास्फीति
कुल मुद्रास्फीति के साथ, या खींचने
एमपीआई विभिन्न क्षेत्रों में विकास गति की तुलना करने के लिए कई मुद्राओं के लिए। INDICATORS array या M फ़ंक्शन कॉल।