Arrays 基于单元格比较的google sheets中的两个活动工作表更新错误

Arrays 基于单元格比较的google sheets中的两个活动工作表更新错误,arrays,google-apps-script,cell,Arrays,Google Apps Script,Cell,我正在努力让代码正常工作,但我知道我遗漏了一些东西。代码应该做的是:使用另一个工作表引用从另一个单元格中查找特定文本,因此下面的google工作表中有两个工作表:“BSR数据”和“输入表单”。从输入表单中,单元格g6将其数据与BSR数据的第一列进行比较,如果符合条件,则将使用“新值”更新阵列/单元格引用的特定行 链接到谷歌工作表: 现有脚本正在更新所有行,因为它使用for(var i=0;i>lastRow;i++){循环。下面的脚本演示了搜索离散项的过程 我不打算讨论“新值”的更新,因为这一点

我正在努力让代码正常工作,但我知道我遗漏了一些东西。代码应该做的是:使用另一个工作表引用从另一个单元格中查找特定文本,因此下面的google工作表中有两个工作表:“BSR数据”和“输入表单”。从输入表单中,单元格g6将其数据与BSR数据的第一列进行比较,如果符合条件,则将使用“新值”更新阵列/单元格引用的特定行

链接到谷歌工作表:


现有脚本正在更新所有行,因为它使用
for(var i=0;i>lastRow;i++){
循环。下面的脚本演示了搜索离散项的过程

我不打算讨论“新值”的更新,因为这一点在问题中并不清楚

需要注意的方面

  • 脚本获取BSR上的所有数据-
    var bsrdata=BSR.getRange(1,1,bsrLR,bstLC).getValues();
    。这可以在以后更新值时使用
  • 使用Javascript方法,将列A提取为搜索的单独数组-
    var bsrColA=bsrdata.map(函数(e){return e[0];});//[e],[e],[e]=>[e,e,e]
  • 使用Javascript方法进行搜索。注意:如果找到匹配项,则该方法返回数组中搜索项的索引号;如果未找到匹配项,则该方法返回“-1”
  • 脚本测试搜索是否成功:
    if(result!=-1){
  • indexOf
    返回一个从零开始的索引,因此实际的行号是索引加一:
    var row=result+1;


请尝试使用
testFormValue==dataID
或甚至
testFormValue===dataID
=来分配值,但等价性要求“==”且严格等价性要求“==”如果文本正在比较,则会发生什么情况。我尝试了这一点,但它会更新所有行“但它会更新所有行…”这不是您问题中提出的问题。-这是一个完全不同的问题。它正在更新每一行,因为您正在循环使用此
for(var i=0;i>lastRow;i++){
。让我们重新开始:请您重新阅读并编辑您的问题,以准确地解释您正在尝试做什么。同时请共享您的电子表格副本(没有私人或机密信息),并包括成功结果的示例。
function UpdateBSRSpecial()
{
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var testForm = ss.getSheetByName("ENTRY FORM");
    var testTable = ss.getSheetByName("BSR DATA");
    var testFormValue = testForm.getRange("G6").getValue();
    var rangeData = testTable.getDataRange();
    var lastColumn = rangeData.getLastColumn();
    var lastRow = rangeData.getLastRow();
  for(var i=0;i>lastRow;i++){
     var dataID = testForm.getRange(i,1).getValue();
     if(testFormValue == dataID)
    {
        testTable.getRange(i,6).setValue("new value");
    };
  };
};
function so5866895401() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var formsheetname = "ENTRY FORM";
  var form = ss.getSheetByName(formsheetname);
  var bsrname = "BSR DATA";
  var bsr = ss.getSheetByName(bsrname);

  // get input cell on form
  var searchterm = form.getRange("G6").getValue();
  // Logger.log(searchterm);// DEBUG

  //get data from BSR
  var bsrLR = bsr.getLastRow();
  var bstLC = bsr.getLastColumn();
  var bsrdata = bsr.getRange(1,1,bsrLR,bstLC).getValues();

  // get column A of BSR
  var bsrColA = bsrdata.map(function(e){return e[0];});//[[e],[e],[e]]=>[e,e,e]
  // Logger.log(bsrColA);// DEBUG

  // search for the searchterm in ColumnA of BSR
  var result = bsrColA.indexOf(searchterm); // zero-based
  if (result !=-1){
    var row = result+1;
    Logger.log("result = "+result+", row = "+row);
  }
}