【问题标题】:Looping through range of cells looking for values循环遍历寻找值的单元格范围
【发布时间】:2015-09-04 11:19:27
【问题描述】:

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

下面是我目前的代码示例。

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


}

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

【问题讨论】:

  • 我想我知道你想要什么。您能否发布具有正确结构的示例文档?我想确保我的代码遵循您的组织模式。
  • 嗨,Brian,很遗憾,由于数据太敏感,我无法分享示例文档。如果你能提供一个例子那就太好了,如果不是感谢你的帮助。

标签: javascript loops google-apps-script google-sheets


【解决方案1】:

而不是

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

试试

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

【讨论】:

    【解决方案2】:

    从以下位置更改您的 for 循环:

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

    收件人:

    var i = 0,
        numberOfRowsInRange = range.getNumRows();
    
    for (i=0;i<numberOfRowsInRange;i+=1)
    

    【讨论】:

    • 谢谢桑迪,这在循环范围内起作用,但它仍然只能在第一个单元格中获取值。我已经更新了我的代码以包含您建议的 for 循环。 code for (i=0;i&lt;numberOfRowsInRange; i++){ if (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); deleteSheet.deleteRow(range.getRow());}}
    猜你喜欢
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 2015-01-07
    • 2018-01-18
    • 2022-08-17
    • 1970-01-01
    • 2014-09-25
    • 2019-06-05
    相关资源
    最近更新 更多