2015-09-04 147 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) {} 
相关问题