समझिए
क्रम (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 के साथ काम करते हैं।