fx Google Apps Script for Sheets
ENहिन्दी

Apps Script एडिटर, SpreadsheetApp की बुनियाद

⏱ 15 min

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

  • Apps Script क्या है?
  • एडिटर खोलें
  • आपका पहला फ़ंक्शन

समझिए

1. Apps Script क्या है?

JavaScript जो Google के सर्वर पर चलती है और Sheets, Gmail, Drive, Calendar और Docs को कंट्रोल कर सकती है। किसी भी Google अकाउंट के साथ मुफ़्त, कुछ इंस्टॉल नहीं करना, और आपका कंप्यूटर बंद होने पर भी चलती रहती है।

2. एडिटर खोलें

अपनी Google Sheet में: Extensions → Apps Script। नया टैब खुलता है जिसमें Code.gs फ़ाइल और खाली myFunction होता है।

ऐसे खोली गई स्क्रिप्ट शीट से bound होती है — फ़ाइल के अंदर रहती है और getActiveSpreadsheet() इस्तेमाल कर सकती है। (script.google.com से बनी standalone स्क्रिप्ट को शीट ID से खोलनी पड़ती है।)

ऊपर प्रोजेक्ट का नाम बदलें (जैसे "Stock Tools")।

3. आपका पहला फ़ंक्शन

function hello() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName('Data');
  Logger.log('File: ' + ss.getName());
  Logger.log('Sheet: ' + sheet.getName() + ', last row: ' + sheet.getLastRow());
}
  1. सेव करें (Ctrl + S)।
  2. फ़ंक्शन ड्रॉपडाउन में hello चुनें → Run।
  3. पहली बार अनुमति माँगी जाएगी: Review permissions → अपना अकाउंट चुनें। अपनी स्क्रिप्ट के लिए "Google hasn't verified this app" दिख सकता है → Advanced → Go to (project name)। आप अपनी ही स्क्रिप्ट को अपनी ही शीट की पहुँच दे रहे हैं।
  4. नीचे Execution log में आउटपुट दिखता है।

4. ऑब्जेक्ट की कड़ी

SpreadsheetApp  →  Spreadsheet (फ़ाइल)  →  Sheet (टैब)  →  Range (सेल)
कोड क्या मिलता है
SpreadsheetApp.getActiveSpreadsheet() वह फ़ाइल जिससे स्क्रिप्ट bound है
SpreadsheetApp.openById('ID') कोई दूसरी फ़ाइल (ID उसके URL में होता है)
ss.getSheetByName('Data') नाम से टैब (न मिले तो null)
sheet.getRange('A1') एक सेल
sheet.getRange('A2:E10') एक ब्लॉक
sheet.getRange(2, 1) रो 2, कॉलम 1 = A2

5. सेल पढ़ना और लिखना

function readWrite() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data');
  const price = sheet.getRange('B2').getValue();
  sheet.getRange('C2').setValue(price * 1.18);
  sheet.getRange('D2').setFormula('=B2*1.18');   // or write a formula
  sheet.getRange('A1:E1').setFontWeight('bold').setBackground('#1F4E78').setFontColor('#FFFFFF');
}

सेटर मेथड एक के बाद एक जोड़े जा सकते हैं, जैसे आख़िरी लाइन में।

6. आख़िरी रो और आख़िरी कॉलम

const lastRow = sheet.getLastRow();      // last row with any content
const lastCol = sheet.getLastColumn();

VBA के .End(xlUp) से कहीं आसान। ध्यान दें: डेटा से बहुत नीचे पड़ी कोई भटकी वैल्यू भी गिनी जाती है।

7. झटपट पॉप-अप

SpreadsheetApp.getUi().alert('Done!');
SpreadsheetApp.getActiveSpreadsheet().toast('Report ready', 'ExcelWalaa', 5);

getUi() तभी चलता है जब कोई शीट से स्क्रिप्ट चलाए (टाइमर ट्रिगर से नहीं)। toast कोने में छोटा मैसेज दिखाता है।

आम गलतियाँ

शीट के नाम में टाइपो (getSheetByName null देता है → "Cannot read properties of null")। एडिटर से चलाकर उम्मीद करना कि getUi() डायलॉग एडिटर में दिखेगा (वह शीट वाले टैब में दिखता है)। Run से पहले सेव भूलना।

अभ्यास

mediumProduct, Qty, Rate वाली "Data" शीट बनाएँ। एक फ़ंक्शन लिखें जो आख़िरी रो लॉग करे, कॉलम D में रो 2 का Amount (Qty × Rate) लिखे, हेडर रो फ़ॉर्मेट करे, और "Done" का toast दिखाए।
Data को Sheets में import करें। getSheetByName("Data") से sheet लें, getLastRow() log करें, B2:C2 का getValues() लेकर D2 में qty*rate लिखें। A1:D1 bold करें। Row 2 का 0×100 = 0 और row 3 का 1×125 = 125 जाँचें। अंत में SpreadsheetApp.getActive().toast("Done") दें।

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

शीट से Apps Script खोलने का मेन्यू?
Extensions → Apps Script
टैब न हो तो getSheetByName क्या लौटाता है?
null
Logger.log का आउटपुट कहाँ दिखता है?
Execution log में
Apps Script एडिटर, SpreadsheetApp की बुनियाद · हिंदी | ExcelWalaa