2015-09-04 184 views
1

我有一張數據表,其中包含一條信息,然後根據在下拉菜單中選擇的選項將數據表路由到另一個表單。我已經創建了一個腳本,通過刪除基於在下拉列表中選擇的字符串的行,並在數據表上按下按鈕時將其複製到新工作表中。但是,一旦遇到不符合我所尋找的字符串的字符串,它就會停止。Google Apps腳本 - 在單元格範圍內循環查找值

下面是我到目前爲止的代碼示例。

function sendUpdates() 
{ 
    var sheetNameToWatch = "Data Report"; 
    var sheetNameToDelete = "Hidden - Data Report; 
    var valueToWatch = "Send to XXX"; 
    var sheetNameToMoveTheRowTo = "Hidden - New - Data Report"; 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var range = sheet.getRange("O2:O50"); 
    SpreadsheetApp.setActiveRange(range); 

    for (;range.getValue() == valueToWatch;) 
    { 
    var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo); 
    var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); 
    var deleteSheet = ss.getSheetByName(sheetNameToDelete) 
    sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).copyTo(targetRange, {contentsOnly: true}); 
    sheet.deleteRow(range.getRow()); 
    deleteSheet.deleteRow(range.getRow()); 
    } 


} 

我希望它能夠繼續通過範圍,直到儘可能結束?任何幫助真的很感激。

+0

我個墨水我知道你要做什麼。你能發佈一個正確結構的示例文檔嗎?我想確保我的代碼遵循您的組織模式。 – Brian

+0

嗨,布賴恩,由於數據太敏感,我不能共享示例文檔。如果你能提供一個很好的例子,如果不是謝謝你的幫助。 – cday

回答

0

更改您從循環:

for (;range.getValue() == valueToWatch;) 

要:

var i = 0, 
    numberOfRowsInRange = range.getNumRows(); 

for (i=0;i<numberOfRowsInRange;i+=1) 
+0

感謝桑迪,這是在循環範圍內工作,但它仍然只獲得它的價值,如果它在第一個單元格。我已更新我的代碼以包含您建議的for循環。 'code for for(i = 0; i cday

1

,而不是

if (range.getValue() == valueToWatch) {} 

嘗試

if(dataRange.getCell(0, i).getValue() == valueToWatch) {} 
相關問題