下面的代碼來自這裡,最初由用戶@Cooper 編寫。它所做的只是colA = [1,3,2,4]
從 SHEET 1複製數組中指定的列的值並將它們添加到 SHEET 2。我想重寫代碼的最後 2 行,以便添加來自 SHEET 1 的值到 SHEET 2 中最後可用的行。“最後兩行”是指代碼的最後幾行:drng = des.getRange(1,1,drngA.length,drngA[0].length);//destination array controls size of destination range.drng.setValues(drngA);
知道如何完成這項工作嗎?
非常感謝您的幫助!
function Copy_data()
{
var src = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SHEET 1");
var des = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SHEET 2");
var srng = src.getDataRange();
var srngA = srng.getValues();
var drngA = [];
var colA = [1,3,2,4];//indirect data column selection
for (var i = 0; i < srngA.length;i++ )
{
var k = 0;
drngA[i]=[];
for(var j=0;j<srngA[i].length;j++)
{
drngA[i][k++] = srngA[i][colA[j]-1];
}
drng = des.getRange(1,1,drngA.length,drngA[0].length);//destination array controls size of destination range.
drng.setValues(drngA);
}
}
您可以獲得目標工作表的最後一行,然後將其添加到您的getRange()
函數中。@soMario提出的方法將不起作用,因為它會在您更新 Sheet 時在循環內發出請求,這會導致每次調用des.getLastRow()
.
最簡單的解決方案是將getLastRow()
請求移出循環,然後將其包含在getRange
. 請注意,向其中添加了一個,以便它不會用setValue()
請求覆蓋最後一行。
Code.gs
function Copy_data() {
...
var lastRow = des.getLastRow() + 1
for (var i = 0; i < srngA.length;i++ ){
...
drng = des.getRange(lastRow,1,drngA.length,drngA[0].length)
...
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句