2015-04-05 27 views
1

我希望能夠用列表替換單元格的內容。Google腳本 - 當列表符合條件時替換單元格中的數據

此刻,我在第一列中有一個下拉列表,當用戶選擇接受時,它將該行復制到另一個工作表並刪除舊的行。

但是,在新位置中,它複製了先前位置(第一列)中的下拉列表,該列表已覆蓋包含完成,取消的新下拉菜單(位於表2的第一列)列表中。

我試圖檢測單詞接受和重寫與完整和取消列表中的文件作爲選項或複製整個行不包括第一列。

下面是我目前的代碼。我今天才開始使用Google腳本,所以我在這段代碼中的知識非常有限。到目前爲止,我發現的一切都來自谷歌搜索和一點點運氣。

在此先感謝您的幫助。

function onEdit(event) 
{ 
    // assumes source data in sheet named Form responses 1 
    // target sheet of move to named Commissions in review 
    // test column with yes/no is col 4 or D 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var s = event.source.getActiveSheet(); 
    var r = event.source.getActiveRange(); 

    if(s.getName() == "Form responses 1" && r.getColumn() == 1 && r.getValue() != "") 
    { 
    var row = r.getRow(); 
    var numColumns = s.getLastColumn(); 
    var targetSheet = ss.getSheetByName("Commissions in review"); 
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 2); 
    s.getRange(row, 1, 1, numColumns).copyTo(target); 
    } 

    if(s.getName() == "Commissions in review" && r.getColumn() == 1 && r.getValue() == "Accept") 
    { 
    var row = r.getRow(); 
    var numColumns = s.getLastColumn(); 
    var targetSheet = ss.getSheetByName("Accepted Work list"); 
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); 
    s.getRange(row, 1, 1, numColumns).moveTo(target); 
    s.deleteRow(row); 
    } 
    if(s.getName() == "Commissions in review" && r.getColumn() == 1 && r.getValue() == "Delete") 
    { 
    var row = r.getRow(); 
    var numColumns = s.getLastColumn(); 
    s.deleteRow(row); 
    } 
} 

回答

1

難道你不能只是改變列的起點嗎?現在您的參考範圍與第一列開始:

var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); 
s.getRange(row, 1, 1, numColumns).moveTo(target); 

也許嘗試:

var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 2); 
s.getRange(row, 2, 1, numColumns-1).moveTo(target); 

目標開始在列(2)範圍開始第2欄,併爲numColumns由1

+0

減去完美工作。完全忘了減去1.非常感謝你! – 2015-04-05 03:10:44

相關問題