下面的代碼來自這里,最初由用戶@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);
}
}
uj5u.com熱心網友回復:
您可以獲得目標作業表的最后一行,然后將其添加到您的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)
...
}
檔案
- getRange(行,列,numRows,numColumns)
- 獲取最后一行()
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/365828.html
