Google Apps脚本 - 循环查找值的单元格

时间:2015-09-04 11:19:27

标签: google-apps-script

我有一个数据表,其中包含一个信息,然后根据下拉菜单中选择的选项将其路由到另一个工作表。我创建了一个脚本,通过删除基于下拉列表中选择的字符串的行并在数据表上按下按钮时将其复制到新工作表。但是,一旦遇到不符合我正在寻找的字符串的字符串,它就会停止。

以下是我到目前为止的代码示例。

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()); 
  }


}

如果可能的话,我希望它能够继续通过范围直到结束?任何帮助真的很感激。

2 个答案:

答案 0 :(得分:1)

而不是

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

if( dataRange.getCell(0, i).getValue() == valueToWatch ) {}

答案 1 :(得分:0)

从以下位置更改for循环:

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

要:

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

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