2016-12-20 89 views
0

我想獲得一定範圍的行復制到文本結束後的行。我前幾天做了這個工作,但是現在無法弄清楚我錯了什麼。谷歌腳本copyto問題

到目前爲止,我有:

function getNextRow(); 
    return SpreadsheetApp.getActiveSpreadsheet().getLastRow()+1; 
    } 

    function test() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var range = ss.getRange('a4:e4') 
    var data = range.getValues(); 
    var nextrow = getNextRow(); 
    ss.getRange(nextrow).setValues(data); 
    } 

我已經嘗試了CopyTo從,但似乎無法從谷歌開發者頁面再次看着辦吧。任何幫助表示讚賞,謝謝!

回答

0

首先,你永遠不會指定你正在使用的工作表。這個腳本應該使用哪一張電子表格?使用getActiveSheet挑選活動的紙張,或使用getSheetByName挑選特定的紙張。

而且,您的函數getNextRow會返回一個整數,它是所有數據下面第一行的數字。到現在爲止還挺好。但是,你打電話ss.getRange(nextrow) nextrow是那個整數...不好。這不是使用此方法的acceptable ways之一:它需要單個單元格的A1符號或(行,列)對整數對,或者(行,列,行數,列數)四元組超過一個單元格的範圍。這是你所擁有的,所以使用

ss.getRange(nextrow, 1, data.length, data[0].length).setValues(data); 

這是說:在開始排nextrow中,第1列(意思是),選擇同樣大小的範圍內data。這對data.length, data[0].length是如何得到data數組的高度和寬度。

也就是說,使用appendRow方法有一個更簡單的方法來實現你想要的。下面是將取代所有代碼的函數:

function test() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var range = sheet.getRange('a4:e4') 
    var data = range.getValues(); 
    sheet.appendRow(data[0]); 
} 

這追加A4的內容:在活動工作表中同一表底部E4。方法appendRow採取一維陣列,因此data[0]而不僅僅是data(這是二維的)。