Javascript 当if语句在google脚本中为true时,Else语句仍在运行

Javascript 当if语句在google脚本中为true时,Else语句仍在运行,javascript,if-statement,google-apps-script,Javascript,If Statement,Google Apps Script,我有一个函数,它有一个名称和一组数据,这个名称与一个名称列表相比较。如果该名称已在名称列表中,则与该名称关联的数据将替换旧数据。如果名称不在名称列表中,则会将名称和相关信息添加到列表底部 出于某种原因,当我使用列表中已有的名称运行代码时,原始数据被替换,名称和数据被添加到列表的底部。我希望在添加新个人的同时避免重复人 var app = SpreadsheetApp; var activeSheet = app.getActiveSpreadsheet(); var lookup =

我有一个函数,它有一个名称和一组数据,这个名称与一个名称列表相比较。如果该名称已在名称列表中,则与该名称关联的数据将替换旧数据。如果名称不在名称列表中,则会将名称和相关信息添加到列表底部

出于某种原因,当我使用列表中已有的名称运行代码时,原始数据被替换,名称和数据被添加到列表的底部。我希望在添加新个人的同时避免重复人

  var app = SpreadsheetApp;
  var activeSheet = app.getActiveSpreadsheet();
  var lookup = app.getActiveSpreadsheet().getSheetByName("Lookup");
  var issued = app.getActiveSpreadsheet().getSheetByName("Issued");
  var name1 = lookup.getRange(12,3).getValue();
  var info = lookup.getRange(16,3,1,12).getValues();
  
for (var j=1;j<105;j++){
    var issuedOfficers = issued.getRange(j,11).getValue();
//if the officers name is already recorded in issued the system will replace the current data with updated data
    if (issuedOfficers === name1){
      issued.getRange(j,1,1,12).setValues(info);
    } else {
      var lastrow = issued.getLastRow();
      issued.getRange(lastrow+1,1,1,12).setValues(info);
      break;
    }
}
}```
var-app=电子表格应用程序;
var activeSheet=app.getActiveSpreadsheet();
var lookup=app.getActiveSpreadsheet().getSheetByName(“lookup”);
var issued=app.getActiveSpreadsheet().getSheetByName(“已发布”);
var name1=lookup.getRange(12,3).getValue();
var info=lookup.getRange(16,3,1,12).getValues();

对于(var j=1;j

修改点: 在你的剧本里

  • j
    1
    issuedOfficers===name1
    true
    时,
    issued.getRange(j,1,1,12).setValues(info)
    运行。当
    j
    2
    issuedOfficers==name1
    false
    时,
    issued.getRange(lastrow+1,1,1,12).值(setinfo)
    运行。for循环完成
  • j
    1
    issuedOfficers===name1
    false
    时,
    issued.getRange(lastrow+1,1,12).setValues(info)
    运行。for循环完成
我想这就是你的问题的原因。为了避免这个问题,下面的修改怎么样

修改脚本: 发件人:
  • 在此修改中,首先从发布的
    表单中检索值,并检查值中是否包含
    name1
    。通过此操作,更新行或追加值
注:
  • 请在启用V8时使用此脚本
参考资料:

    • 这次修改怎么样

      修改点: 在你的剧本里

      • j
        1
        issuedOfficers===name1
        true
        时,
        issued.getRange(j,1,1,12).setValues(info)
        运行。当
        j
        2
        issuedOfficers==name1
        false
        时,
        issued.getRange(lastrow+1,1,1,12).值(setinfo)
        运行。for循环完成
      • j
        1
        issuedOfficers===name1
        false
        时,
        issued.getRange(lastrow+1,1,12).setValues(info)
        运行。for循环完成
      我想这就是你的问题的原因。为了避免这个问题,下面的修改怎么样

      修改脚本: 发件人:
      • 在此修改中,首先从发布的
        表单中检索值,并检查值中是否包含
        name1
        。通过此操作,更新行或追加值
      注:
      • 请在启用V8时使用此脚本
      参考资料:
      for (var j=1;j<105;j++){
          var issuedOfficers = issued.getRange(j,11).getValue();
      //if the officers name is already recorded in issued the system will replace the current data with updated data
          if (issuedOfficers === name1){
            issued.getRange(j,1,1,12).setValues(info);
          } else {
            var lastrow = issued.getLastRow();
            issued.getRange(lastrow+1,1,1,12).setValues(info);
            break;
          }
      }
      
      var names = issued.getRange(1, 11, 105, 1).getValues().flat();
      var index = names.indexOf(name1);
      if (index > -1) {
        issued.getRange(index + 1,1,1,12).setValues(info);
      } else {
        issued.appendRow(info[0]);
      }