Google Script, для l oop останавливается, пока не достигнет своего состояния, в результате чего он не будет продолжать просмотр непроверенных данных. - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь получить значение из листа, который я редактирую, и сравнить его с другой ячейкой листов, которая содержит другое значение, чтобы увидеть, соответствует ли оно, все, кажется, работает довольно хорошо, но однажды для l oop запускает, он проходит только около 90-100 строк перед остановкой, из-за чего он не соответствует установленным условиям, я распечатываю его в пустую ячейку, сообщая мне, через что он прошел, пока он медленно идет вниз по списку.

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetMasterList = ss.getSheetByName("Master Item List");
var sheetItems = ss.getSheetByName("Items");

function onEdit(event){


  if (ss.getActiveSheet().getName() == "Master Item List"){
    var r = event.range;
    var v = event.value;
    checkColumnIfEditedI(r,v);
  }
}

function checkColumnIfEditedI(gotRange,value){
  // Get the row and column
  var columnOfEditedRange = gotRange.getColumn();
  var rowOfEditedRange = gotRange.getRow();
  var valueOfEditedRange = value;


  if (columnOfEditedRange == 1){
    var lastRowInItems = sheetItems.getLastRow();

    for (i=lastRowInItems; i>=0; i--){
      var rowChecked = sheetItems.getRange(i, 4).getValue();

      if (rowChecked == valueOfEditedRange){
        sheetMasterList.getRange(2, 17).setValue("Found your row");
        break
      }else{
        sheetMasterList.getRange(2, 17).setValue("Caching: \nRow " + i + " Column 4" + "\nResult " + rowChecked);
      }

    }


  }else{
    sheetMasterList.getRange(30, 1).setValue("Not the correct Row");
  }
}

// Check which cell has been edited (Master Items List) DONE
// If Master Items List was edited check what cell and row was edited DONE
// Check if Items sheet has said item
// If item in Items sheet does not exist set "Not in cell"
// If item in Items sheet does exist set "In Cell" and link to the Items sheet data.

Я признаю, что, вероятно, есть более простой способ сделать весь этот код, который я сделал, но он работает для меня, если вы хотите исправить это и сделать его бесполезными. Я весь в глазах: D

1 Ответ

0 голосов
/ 06 января 2020
function onEdit(e){
  var sh=e.range.getSheet();
  if (sh.getName()=="Master Item List"){
    var sheetMasterList=e.source.getSheetByName("Master Item List");
    var sheetItems=e.source.getSheetByName("Items");
    if (e.range.columnStart==1){
      var vA=sheetItems.getRange(1,4,sheetItems.getLastRow(),1).getValues();
      for(var i=0;i<vA.length;i++) {
        if(vA[i][0]==e.value) {
          sheetMasterList.getRange(2,17).setValue("Found your row");
          break;
        }else{
          sheetMasterList.getRange(2, 17).setValue("Caching: \nRow " + Number(i+1) + " Column 4" + "\nResult " + vA[i][0]);//this would run a lot faster with out this line.
        }
      }
    }else{
      sheetMasterList.getRange(30,1).setValue("Not the correct Row");
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...