Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script Google脚本,for循环在达到条件之前停止,导致它无法继续通过未检查的数据_Google Apps Script - Fatal编程技术网

Google apps script Google脚本,for循环在达到条件之前停止,导致它无法继续通过未检查的数据

Google apps script Google脚本,for循环在达到条件之前停止,导致它无法继续通过未检查的数据,google-apps-script,Google Apps Script,我试图从我正在编辑的工作表中获取一个值,并将其与另一个包含另一个值的工作表单元格进行比较,以查看它是否匹配,一切似乎都运行得很好,但一旦for循环开始,它在停止之前只经过大约90-100行,使其无法等于设置的条件,我把它打印到一个空的手机上,告诉我它到底经历了什么,直到它慢慢地进入列表 var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheetMasterList = ss.getSheetByName("Master Item List"

我试图从我正在编辑的工作表中获取一个值,并将其与另一个包含另一个值的工作表单元格进行比较,以查看它是否匹配,一切似乎都运行得很好,但一旦for循环开始,它在停止之前只经过大约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

函数onEdit(e){
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");
    }
  }
}
var sh=e.range.getSheet(); 如果(sh.getName()=“主项目列表”){ var sheetMasterList=e.source.getSheetByName(“主项目列表”); var sheetItems=e.source.getSheetByName(“项目”); if(e.range.columnStart==1){ var vA=sheetItems.getRange(1,4,sheetItems.getLastRow(),1.getValues();
对于(var i=0;iIt按照我的预期工作,非常感谢!你能不能快速向我解释一下为什么我的方法不起作用?我不确定我做错了什么,因为它正在检查工作表,但没有完成。此外,如果找不到该项,它只会显示包含其开始数据的最后一行。很难识别exac如果没有工作表的副本,问题可能是由于大量数据减慢了脚本的速度,您正在到达。我看到了一些可能的改进,例如在
for
循环之外声明
rowChecked
,或者将
I>=0
设置为
I>0
,因为工作表中没有
0
行。