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