I have a list of value to wrote on different sheet of a spreadsheet;
the code look like that :
const sss = SpreadsheetApp.getActive();
const SHEET_TO_GET = ['BOURGET', 'ALPINES MUSEUM DAV', 'BLOIS_MAQUETTE', 'BELVEDERE MUSEUM', 'BELVEDERE MUSEUM'];
const DATA_TO_WRITE = [['2D', "MAREIKE", '50', '33.0'],
['PROJECT MANAGEMENT', "LOUISE", '50', '16.5'],
['PROJECT MANAGEMENT', "MAREIKE", '50', '6.0'],
['FABRICATION', "MAREIKE", '50', '6.0'],
['2D', "MAREIKE", '50', '31.5']];
SHEET_TO_GET.forEach((n, i) => {
let sh = sss.getSheetByName(n);
let col1 = sh.getRange("A1:A" + sh.getLastRow()).getValues().flat();
let nr = col1.indexOf("MATERIAL") + 1;
sh.insertRowBefore(nr);
sh.getRange(nr, 1, 1, DATA_TO_WRITE[i].length ).setValues([DATA_TO_WRITE[i]]);
});
but in a perfect world, I would like to wrote one more information, a "value" that will make a sum of the column C*D (in the column E) for each row where a value is wrote, no matter the row where it is wrote.
here is the value :
DATA_TO_WRITE = [['2D', "MAREIKE", '50', '33.0'],
['PROJECT MANAGEMENT', "LOUISE", '50', '16.5'],
['PROJECT MANAGEMENT', "MAREIKE", '50', '6.0'],
['FABRICATION', "MAREIKE", '50', '6.0'],
['2D', "MAREIKE", '50', '31.5']];
and I would like to know if there is anyway to wrote something like that :
const DATA_TO_WRITE = [['2D', "MAREIKE", '50', '33.0', "=SUM(C*D)"],
['PROJECT MANAGEMENT', "LOUISE", '50', '16.5', "=SUM(C*D)"],
['PROJECT MANAGEMENT', "MAREIKE", '50', '6.0', "=SUM(C*D)"],
['FABRICATION', "MAREIKE", '50', '6.0', "=SUM(C*D)"],
['2D', "MAREIKE", '50', '31.5', "=SUM(C*D)"]];
Or do I have to think about something more complicated ?
Try this:
function myfunck() {
const ss = SpreadsheetApp.getActive();
const ns = ['Sheet0', 'ALPINES MUSEUM DAV', 'BLOIS_MAQUETTE', 'BELVEDERE MUSEUM', 'BELVEDERE MUSEUM'];
let vs = [['2D', "MAREIKE", '50', '33.0'],
['PROJECT MANAGEMENT', "LOUISE", '50', '16.5'],
['PROJECT MANAGEMENT', "MAREIKE", '50', '6.0'],
['FABRICATION', "MAREIKE", '50', '6.0'],
['2D', "MAREIKE", '50', '31.5']];
vs = vs.map(([a,b,c,d]) => {[a,b,c,d,parseFloat(c) * parseFloat(d)]});
ns.forEach((n, i) => {
let sh = ss.getSheetByName(n);
let col1 = sh.getRange("A1:A" + sh.getLastRow()).getValues().flat();
let nr = col1.indexOf("MATERIAL") + 1;
sh.insertRowBefore(nr);
sh.getRange(nr, 1, 1, vs[i].length ).setValues([vs[i]]);
});
}