fx Google Sheets के साथ काम
ENहिन्दी

SpreadsheetApp: शीट, रेंज, getValues/setValues

⏱ 20 मिनट

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

  • क्रम: Spreadsheet → Sheet → Range
  • range चुनने के अलग-अलग तरीके
  • एक cell और कई cells पढ़ना-लिखना
  • आख़िरी row ढूँढना और data जोड़ना

समझिए

क्रम (hierarchy)

SpreadsheetApp            ← the service
 └─ Spreadsheet (file)    ← getActiveSpreadsheet() / openById()
     └─ Sheet (tab)       ← getSheetByName('Sales')
         └─ Range (cells) ← getRange('A1:C10')
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('Sales');
const range = sheet.getRange('A1:C10');

getActiveSheet() की जगह getSheetByName लें — "active" tab वह होता है जो user उस समय देख रहा है, और triggers में कोई active tab होता ही नहीं।

Range चुनने के तरीके

sheet.getRange('B2');            // one cell, A1 notation
sheet.getRange('A2:D20');        // a block
sheet.getRange(2, 1);            // row 2, column 1 → A2
sheet.getRange(2, 1, 19, 4);     // start row, start col, number of rows, number of cols → A2:D20
sheet.getDataRange();            // everything from A1 to the last used cell

4 numbers वाला तरीका code में सबसे ज़्यादा काम आता है, क्योंकि numbers की गणना की जा सकती है:

const lastRow = sheet.getLastRow();          // last row that has data
const data = sheet.getRange(2, 1, lastRow - 1, 4).getValues(); // skip header

Values पढ़ना

const one = sheet.getRange('B2').getValue();          // a single value
const many = sheet.getRange('A2:D20').getValues();    // a 2D array [[...],[...]]
const shown = sheet.getRange('C2').getDisplayValue(); // text exactly as shown, e.g. '₹1,200.00'
const formula = sheet.getRange('E2').getFormula();    // e.g. '=C2*D2'

getValues() हमेशा 2D array देता है — एक column के लिए भी ([['a'],['b'],['c']])।

Values लिखना

sheet.getRange('F1').setValue('Total');

sheet.getRange('F2:F4').setValues([
  [100],
  [200],
  [300]
]);

sheet.getRange('E2').setFormula('=C2*D2');

सुनहरा नियम: setValues को दिया गया array range के size के बिल्कुल बराबर होना चाहिए। 3 rows × 1 column के लिए [[x],[y],[z]] चाहिए।

Row जोड़ना (append)

function addSale() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sales');
  sheet.appendRow([new Date(), 'Gold Ring', 1, 48500]);
}

appendRow data वाली आख़िरी row के बाद नई row जोड़ता है। logs और form जैसी entries के लिए एकदम सही।

साफ़ करना

sheet.getRange('A2:D100').clearContent(); // values only, keeps formatting
sheet.getRange('A2:D100').clear();        // values + formatting

उदाहरण: हर line का total निकालना

Sales शीट की row 1 में headers हैं: Date | Item | Qty | Rate। column E में Amount जोड़ना है।

function fillAmounts() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sales');
  const lastRow = sheet.getLastRow();
  if (lastRow < 2) return; // no data

  const rows = sheet.getRange(2, 1, lastRow - 1, 4).getValues();
  const amounts = rows.map(r => [r[2] * r[3]]); // each output row is an array with one value

  sheet.getRange('E1').setValue('Amount');
  sheet.getRange(2, 5, amounts.length, 1).setValues(amounts);
}

मुख्य बातें

  • Spreadsheet → Sheet → Range। tabs को नाम से लें।
  • getRange(row, col, numRows, numCols) code के लिए सबसे सुविधाजनक है।
  • getValues / setValues बराबर size के 2D arrays के साथ काम करते हैं।

अभ्यास

अभ्यासअभ्यास 1

एक function लिखिए जो Sales पढ़े और column F में Amount > 50000 होने पर High, वरना Normal लिखे।

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

getRange(3, 2, 5, 2) क्या चुनता है? a) C2:D6 b) B3:C7 c) B3:F4
B3:C7
A1:A3 के लिए getValues() क्या लौटाता है? a) ['a','b','c'] b) [['a'],['b'],['c']] c) 'a,b,c'
[['a'],['b'],['c']]
SpreadsheetApp: शीट, रेंज, getValues/setValues · हिंदी | ExcelWalaa