This is a sample script for retrieving the start and end row numbers of the same values in a column on Google Spreadsheet using Google Apps Script.
There is a case in that I want to retrieve the rows of the same values in a column on Google Spreadsheet using Google Apps Script. In this post, I would like to introduce a simple sample script for achieving this.
Sample script
function myFunction() {
const sheet = SpreadsheetApp.getActiveSheet();
const res = [
...sheet
.getRange("A1:A" + sheet.getLastRow())
.getDisplayValues()
.reduce(
(m, [a], i) => m.set(a, m.has(a) ? [...m.get(a), i + 1] : [i + 1]),
new Map()
)
.values(),
].map((e) => ({ start: e[0], end: e[e.length - 1] }));
console.log(res);
}
-
When this script is for the above sample Spreadsheet, the following result is obtained.
[ { "start": 1, "end": 2 }, { "start": 3, "end": 5 }, { "start": 6, "end": 7 }, { "start": 8, "end": 8 }, { "start": 9, "end": 10 }, { "start": 11, "end": 11 } ]
-
As a sample application using this script, when this script is used as follows, the top sample situation can be obtained.
function myFunction() { const sheet = SpreadsheetApp.getActiveSheet(); const res = [ ...sheet .getRange("A1:A" + sheet.getLastRow()) .getDisplayValues() .reduce( (m, [a], i) => m.set(a, m.has(a) ? [...m.get(a), i + 1] : [i + 1]), new Map() ) .values(), ].map((e) => ({ start: e[0], end: e[e.length - 1] })); // Below script set the cell colors. res.forEach(({ start, end }, i) => sheet .getRange(start, 1, end - start + 1) .setBackground(i % 2 ? "#b6d7a8" : "#a4c2f4") ); }