javascript - Fill a range (multiple columns) down multiple rows - google-apps-script -
i had success filling single column (a) value found in range a1...
var ss = spreadsheetapp.getactivespreadsheet().getsheetbyname("sheet1"); var lastrow = ss.getdatarange().getnumrows(); var rngval = ss.getrange("a1").getvalue() ss.getrange("a2:a"+lastrow).setvalue(rngval)
so thought on easy-street, , tried modify/apply larger range filling multi-column range values found in range c1:h1...
var ss = spreadsheetapp.getactivespreadsheet().getsheetbyname("sheet1"); var lastrow = ss.getdatarange().getnumrows(); var rngval = ss.getrange("c1:h1").getvalues() ss.getrange("c2:h"+lastrow).setvalues(rngval)
apparently there bit more slapping "s" onto end of word "value".
the error reads follows:
incorrect range height, 1 should 10
(fyi: var lastrow = 11)
btw, no error if use value instead of values, although end cells full of value found in range c1.
so i'm close.... or way off. 1 of those.
help???
the error message quite explicit... size of array must fit range in both getvalues , setvalues. try :
function myfunction() { var ss = spreadsheetapp.getactivespreadsheet().getsheetbyname("sheet1"); var lastrow = ss.getlastrow() var rngval = ss.getrange("c1:h"+lastrow).getvalues();// array of 10 "rows" , 6 "columns" ss.getrange("c2:h"+(lastrow+1)).setvalues(rngval);//write array range has same size. (starting row2 must ends on lastrow+1 keep same number of "rows" }
this function shift range c1:h last row c2:h lastrow+1, not sure useful that's not point here ;-)
edit : sorry, didn't understand requirement... here code reproduce data c1:h1 in rows below
function myfunction() { var ss = spreadsheetapp.getactivespreadsheet().getsheetbyname("sheet1"); var lastrow = ss.getlastrow() var rngval = ss.getrange("c1:h1").getvalues();// array of first row var rowdata = rngval[0] var newdata = [] for(n=1;n<lastrow;++n){newdata.push(rowdata)} ss.getrange("c2:h"+lastrow).setvalues(newdata);//write array range has same size. (starting row2 must ends on lastrow+1 keep same number of "rows" }
edit2 following comment below :
a word of explanation :
when using range.getvalues()
2 dimensions array, meaning array of arrays can represented follow : [[data1,data2,data3],[data4,data5,data6]]
data1, 2 & 3 value of first array (index 0) , data 4,5 & 6 values of second array (index 1). if want values in first array have write : value = arrayname[0]
, return 1 dimension array [data1,data2,data3]
, that's used rowdata.
now need 2 dimension array again able write new data range in spreadsheet. therefor create new array (var newdata=[]
or var newdata = new array()
same), , in loop add rowdata array new array... result array of arrays, looking , can write directly sheet in 1 single setvalues
statement.
Comments
Post a Comment