2013-01-08 12 views
1

如果在第5列中輸入任何信息,我需要將該行數據複製到另一個電子表格。我的函數中的第一個if()是用於其他的東西,它會在任何信息輸入到第4列的時候對數據進行排序,但是我需要另一個if()來工作,但它沒有,我看過其他問題,但我找不到適合我的情況的答案。將一行信息複製到另一個電子表格的Google Spreadsheets(應用程序腳本)

function onEdit(event) { 
    var sheet=event.source.getActiveSheet(); 
    var editedCell=sheet.getActiveCell(); 
    var columnToSortBy=4; 
    var columnToArchive=5; 
    var tableRange= "A2:F!"; 

    if(editedCell.getColumn() == columnToSortBy){ 
    var range=sheet.getRange(tableRange); 
    range.sort({column : columnToSortBy}); 
    } 
    else{ 
    if(editedCell.getColumn() == columnToArchive){ 
     var rowToBeMoved=editedCell.getRow(); 
     var rangeToBeMoved=sheet.getRange("A" + rowToBeMoved + ":F" + rowToBeMoved); 
     var values=rangeToBeMoved.getValues(); 
     var archiveSpreadSheet=SpreadsheetApp.openById("0AroBvchobu2edHNXQ3ZUQjI5TWJtWWZwa1UtcExPNnc"); 
     var archiveSheet=archiveSpreadSheet.getSheetByName("archive"); 
     archiveSheet.appendRow(values); 
    } 
    } 
} 

我已經發現問題是在第二個if塊中的最後三行。看起來,在「var values = rangeToBeMoved.getValues();」這一行之後,腳本停止運行,因爲如果我在該行之後或之前的任何地方放置了Browser.msgBox(「hi」),則會顯示該消息,但如果我把它放在下一行之後,它不會出現。問題是與.openById()?幫幫我!

回答

1

這段代碼工作:

更新:2013年10月1日
您需要使用columnIndex和不getColumn:

function onEdit(event) { 
    // set items for current spreadsheet 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sh = ss.getActiveSheet(); 
    var row = sh.getActiveRange().getRowIndex(); 
    var col = sh.getActiveRange().getColumnIndex(); 
    var columnToSortBy=4; 
    var columnToArchive=5; 
    var tableRange= "A2:F!"; 

    if(col == columnToSortBy){ 
    var range=sh.getRange(tableRange); 
    range.sort({column : columnToSortBy}); 
    } 

    if(col == columnToArchive){ 
    var rangeToBeMoved=sh.getRange("A" + row + ":F" + row); 
    var values=rangeToBeMoved.getValues(); 
    var archiveSpreadSheet=SpreadsheetApp.openById("your key"); 
    var archiveSheet=archiveSpreadSheet.getSheetByName("Sheet1");   
    archiveSheet.appendRow(values[0]); 
    } 
}  

appendRow只接受一維陣列。 getRange將產生一個二維數組。添加一個零(在方括號之間)將使其成爲一維數組。

+0

是的,我發現追加行不起作用,得到了修正,但還有另一個問題。 我認爲問題在於,使用event參數時,它不會打開另一個電子表格。似乎有一個錯誤,腳本的編輯觸發似乎與另一張表的打開衝突。 謝謝你的迴應! –

相關問題