'Google Script subtract an entire column from the other
So I'm currently working on a meal planner that looks at my current inventory of ingredients and then looks through the recipes in the spreadsheet to determine what I do/don't need to make those recipes that week and then returns a shopping list. I want to add a button to update that inventory by adding the ingredients from the shopping list. I have the values set up in different columns, but I can't figure out the code to add the values respectively. I have never done any coding, so this is based off of what I found on Google. Here's the code I currently have:
function AddtoInventory() {
var ss = SpreadsheetApp.getActiveSheet();
var num1 = ss.getRange('AA3:AA').getValue();
var num2 = ss.getRange('E3:E').getValue();
ss.getRange('E3:E').setValue(num1+num2);
}
But this just adds the first set of values (AA3+E3) and changes the current inventory for every ingredient to that same value. I want it to add AA3+E3 and change the value of E3 to that sum and then AA4+E4 and change the value of E4 to that sum and so on if that makes sense.
Solution 1:[1]
Use
getValues()andsetValues()instead ofgetValue()andsetValue()Use .map() for addition:
function AddtoInventory() {
const ss = SpreadsheetApp.getActiveSheet(),
lr = ss.getLastRow(),
valuesAA = ss.getRange('AA3:AA' + lr).getValues(),
rngE = ss.getRange('E3:E' + lr),
valuesE = rngE.getValues(),
add = (num1,num2) => num1 + num2;
rngE.setValues(valuesE.map((row, idx) => [add(row[0],valuesAA[idx][0])]));
}
Solution 2:[2]
Subtract and entire column
function AddtoInventory() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getActiveSheet();
let col27 = sh.getRange(3, 27, sh.getLastRow() - 2).getValues();
let col5 = sh.getRange(3, 5, sh.getLastRow() - 2).getValues();
col5.forEach((r, i) => {
r[0] -= col27[i][0];
});
sh.getRange(3, 5, col5.length, col5[0].length).setValues(col5);
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | TheMaster |
| Solution 2 | Cooper |
