Iterate over range, append string to each
google-apps-script, google-sheets
Solution
You can try something like this:
//
// helper `forEachRangeCell` function
//
function forEachRangeCell(range, f) {
const numRows = range.getNumRows();
const numCols = range.getNumColumns();
for (let i = 1; i <= numCols; i++) {
for (let j = 1; j <= numRows; j++) {
const cell = range.getCell(i, j)
f(cell)
}
}
}
//
// Usage
//
const range = SpreadsheetApp.getActiveSheet().getActiveRange();
forEachRangeCell(range, (cell) => {
cell.setValue(`${cell.getValue()} string`)
})
Problem
I have a range of cells selected in a Google Sheets (activerange). I want to iterate over every cell in that range, and add a string to the end. The string is always the same, and can be hard coded into the function. It seems like a really simple thing, but I've been messing with the code for an hour now and can't get anything useful to happen, and the docs are really not helping. Here's what I have now. I don't code JS (I do know VBA, for all that helps..). ``` function appendString() { var range = SpreadsheetApp.getActiveSheet().getActiveRange(); for (var i = 0; i < range.length; i++) { var currentValue = range[i].getValue(); var withString = currentValue + " string"; range[i].setValue(withString); } } ```