fx Scheduling & CI
ENहिन्दी

Office Scripts + Power Automate की झटपट सैर

⏱ 15 min

आप क्या सीखेंगे

  • ज़रूरतें
  • Office Scripts बनाम VBA
  • पहली स्क्रिप्ट रिकॉर्ड करें

समझिए

1. ज़रूरतें

  • Microsoft 365 बिज़नेस या एजुकेशन अकाउंट (Office Scripts हर प्लान में नहीं — देखें कि Automate टैब दिखता है या नहीं)।
  • वर्कबुक OneDrive for Business या SharePoint में सेव हो।
  • Excel on the web में चलता है, और बिज़नेस अकाउंट के लिए नए Excel डेस्कटॉप वर्ज़न में भी।

अगर आपके पास सिर्फ़ पर्सनल/होम अकाउंट है या फ़ाइलें अपनी डिस्क पर हैं, तो इसकी जगह VBA (मॉड्यूल 2) या Python + Task Scheduler (लेसन 1) इस्तेमाल करें।

2. Office Scripts बनाम VBA

VBA Office Scripts
भाषा VBA TypeScript (टाइप वाली JavaScript)
कहाँ चलता है Excel डेस्कटॉप Excel on the web (और बिज़नेस अकाउंट के लिए डेस्कटॉप)
कहाँ रखा जाता है .xlsm के अंदर आपके OneDrive में, किसी भी वर्कबुक पर चलता है
बिना PC के शेड्यूल पर चल सकता है नहीं हाँ, Power Automate से
Outlook, डिस्क की फ़ाइलें, दूसरे ऐप हाँ (डेस्कटॉप) नहीं — वह हिस्सा Power Automate करता है

3. पहली स्क्रिप्ट रिकॉर्ड करें

Automate टैब → Record Actions → हेडर फ़ॉर्मेट करें, चौड़ाई सेट करें → Stop। Excel आपके लिए स्क्रिप्ट लिख देता है — macro recorder वाला ही आइडिया। कोड देखने के लिए Edit पर क्लिक करें।

4. स्क्रिप्ट की बनावट

हर स्क्रिप्ट में एक main फ़ंक्शन होता है। Excel उसमें वर्कबुक देता है:

function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getWorksheet("Data");
  sheet.getRange("A1").setValue("Updated by Office Script");
}

पैटर्न: कुछ get करो (getWorksheet, getRange, getValues) और कुछ set करो (setValue, setValues, setColor)। Apps Script से काफ़ी मिलता-जुलता।

5. काम की स्क्रिप्ट: शीट फ़ॉर्मेट करो और टोटल लौटाओ

function main(workbook: ExcelScript.Workbook): number {
  const sheet = workbook.getWorksheet("Data");
  if (!sheet) throw new Error("Sheet 'Data' not found");
  const used = sheet.getUsedRange();
  if (!used) return 0;                       // empty sheet
  const values = used.getValues();

  // Total of column E (index 4), skipping the header row
  let total = 0;
  for (let i = 1; i < values.length; i++) {
    total += Number(values[i][4]) || 0;
  }

  // Header style
  const header = used.getRow(0);
  header.getFormat().getFont().setBold(true);
  header.getFormat().getFont().setColor("#FFFFFF");
  header.getFormat().getFill().setColor("#1F4E78");

  used.getFormat().autofitColumns();
  sheet.getFreezePanes().freezeRows(1);

  return total;
}
  • getValues() 2D array लौटाता है, बिल्कुल Apps Script की तरह।
  • main(...) के बाद : number का मतलब स्क्रिप्ट एक नंबर लौटाती है। Power Automate अगले स्टेप में वह वैल्यू इस्तेमाल कर सकता है।
  • दोनों if जाँचें ग़ायब या खाली शीट को संभालती हैं, ताकि फ़्लो को क्रैश की जगह साफ़ मैसेज मिले।
  • जाँचने के लिए Code Editor में Run पर क्लिक करें।

6. Power Automate से शेड्यूल करें

make.powerautomate.com पर → Create → Scheduled cloud flow:

  1. Recurrence — हर 1 Week, Monday को, घंटा 9, टाइम ज़ोन (UTC+05:30) Chennai, Kolkata, Mumbai, New Delhi।
  2. Excel Online (Business) → Run script — Location (OneDrive for Business), Document Library, File और Script चुनें।
  3. Office 365 Outlook → Send an email (V2) — To: मालिक; Subject: Weekly sales total; Body: "Total sales: " और Run script स्टेप के dynamic content से result चुनें।
  4. Save → अभी आज़माने के लिए Test → Manually।

वर्कबुक खुली होना ज़रूरी नहीं और कोई कंप्यूटर चालू होना ज़रूरी नहीं।

7. स्क्रिप्ट में वैल्यू भेजना

workbook के बाद पैरामीटर जोड़ें, Power Automate हर एक के लिए बॉक्स दिखाता है:

function main(workbook: ExcelScript.Workbook, minAmount: number): string {
  const used = workbook.getWorksheet("Data")?.getUsedRange();
  if (!used) return "No data";
  const values = used.getValues();
  const big = values.slice(1).filter(r => Number(r[4]) >= minAmount);
  return `${big.length} sales of ${minAmount} or more`;
}

8. दूसरे काम के ट्रिगर

Recurrence की जगह फ़्लो SharePoint फ़ोल्डर में फ़ाइल जुड़ने पर, अटैचमेंट वाला ईमेल आने पर, Microsoft Form सबमिट होने पर, या Power Automate मोबाइल ऐप के बटन से शुरू हो सकता है। Run script स्टेप वही रहता है।

9. सीमाएँ जो जाननी चाहिए

Power Automate से चलने वाली स्क्रिप्ट की समय सीमा छोटी होती है (कुछ मिनट) और रोज़ के रन की सीमा भी, इसलिए उन्हें केंद्रित रखें — फ़ॉर्मेट करो, सारांश बनाओ, वैल्यू लौटाओ। भारी डेटा का काम Power Query या Python में करें।

आम गलतियाँ

वर्कबुक लोकल डिस्क पर सेव होना (Run script उसे नहीं देख सकता)। Recurrence में गलत टाइम ज़ोन। एक getValues की जगह हर सेल पर getValue वाले लंबे लूप (धीमे, Apps Script जैसे ही)। उम्मीद करना कि स्क्रिप्ट खुद ईमेल भेजेगी — वह Power Automate करता है।

अभ्यास

mediumOneDrive for Business में Data शीट (Date, Salesperson, Region, Product, Amount) रखें। फ़ॉर्मेटिंग स्क्रिप्ट रिकॉर्ड करें, फिर उसे सेक्शन 5 की स्क्रिप्ट से बदलें। ऐसा फ़्लो बनाएँ जो उसे हर सोमवार सुबह 9 बजे IST चलाए और टोटल आपको ईमेल करे। हाथ से जाँचें।
Workbook OneDrive for Business में रखें, Data पर script चलाएँ और numeric total return करें। Power Automate में India time zone और Monday 09:00 चुनें। Run script में सही workbook/script लें और result email body में लगाएँ। Manual flow का total SUM(Data[Amount]) से मिलाएँ और दोनों steps में वही workbook रखें।

प्रश्नोत्तरी

Office Scripts कौन-सी भाषा इस्तेमाल करते हैं?
TypeScript
Power Automate के लिए वर्कबुक कहाँ सेव होनी चाहिए?
OneDrive for Business या SharePoint
फ़्लो को स्क्रिप्ट से टोटल कैसे मिलता है?
स्क्रिप्ट main से लौटाती है, और फ़्लो "result" इस्तेमाल करता है
Office Scripts + Power Automate की झटपट सैर · हिंदी | ExcelWalaa