錯誤消息非常明確......數組的大小必須適合getValues和setValues中的範圍。嘗試像這樣 :
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var lastRow = ss.getLastRow()
var rngVal = ss.getRange("C1:H"+lastRow).getValues();// get an array of 10 "rows" and 6 "columns"
ss.getRange("C2:H"+(lastRow+1)).setValues(rngVal);//write back this array to a range that has the same size. (starting from Row2 it must ends on lastRow+1 to keep the same number of "rows"
}
此功能將轉移範圍C1:H最後一排C2:H LASTROW + 1,不知道這是非常有用的,但這裏不是重點;-)
編輯:對不起,我不明白究竟你的要求......這裏是從C1複製數據的代碼:以下H1在所有行下面
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var lastRow = ss.getLastRow()
var rngVal = ss.getRange("C1:H1").getValues();// get an array of the 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 back this array to a range that has the same size. (starting from Row2 it must ends on lastRow+1 to keep the same number of "rows"
}
EDIT2您評論如下:
解釋一個字:
當使用range.getValues()
我們得到一個2名維陣列,這意味着可被表示爲如下數組的數組:[[data1,data2,data3],[data4,data5,data6]]
DATA1,2 & 3是值第一個數組(索引0)的數據和第二個數組(索引1)的數據是第二個數組的值。所以,如果你想獲得第一個數組中的值,你必須這樣寫:value = arrayName[0]
,這將返回一維數組[data1,data2,data3]
,這就是我用來獲取rowData。
現在我們需要再次獲取2維數組,以便能夠將新數據寫回到電子表格中的範圍。因此,我們創建一個新的數組(var newData=[]
或var newData = new Array()
的確如此),並且在for循環中我們將rowData數組添加到這個新數組中......結果將是一個數組數組,這實際上就是我們要找的我們可以直接在一張setValues
聲明中將其寫入表單。
我想他正試圖做的是填寫一個排一個與下面的值一行的所有行。 – ScampMichael
是的,ScampMichael是正確的。我試圖複製第一個代碼示例,它填充了列A中的範圍。我試圖對C:H的多列範圍執行相同的操作。我可以逐欄完成,但這只是一個解決方法。 – 5th4x4
...或者它可能不是解決方法。也許它需要這樣構建(??) – 5th4x4