Javascript 我的变量在电子表格脚本部分的for循环中更改后重置
我不熟悉javascript,但对C#有一些经验。所以我想写一个脚本来帮助我计算一种类型的产品销售了多少,以及某家公司销售了多少。目标是为与参数market companyObjective具有相同值的每一行向变量numberSoldByCompany添加一个。变量numberOfProductStock和参数marketObjective也是如此。 问题是,在我退出每个for循环后,这些变量重置为0。有什么想法吗Javascript 我的变量在电子表格脚本部分的for循环中更改后重置,javascript,google-apps-script,google-sheets,spreadsheet,Javascript,Google Apps Script,Google Sheets,Spreadsheet,我不熟悉javascript,但对C#有一些经验。所以我想写一个脚本来帮助我计算一种类型的产品销售了多少,以及某家公司销售了多少。目标是为与参数market companyObjective具有相同值的每一行向变量numberSoldByCompany添加一个。变量numberOfProductStock和参数marketObjective也是如此。 问题是,在我退出每个for循环后,这些变量重置为0。有什么想法吗 function MarketShare(marketObjective, co
function MarketShare(marketObjective, companyObjective) {
var numberSoldByCompany = 0;
var numberOfProductStock = 0;
var range = SpreadsheetApp.getActiveSheet().getRange('A110:B244');
var rangeRows = 134;
var rangeColumn = 2;
for (var i = 1; i <= rangeRows; i++){
var currentValue = range.getCell(i,1).getValue();
if(currentValue == marketObjective){
numberOfProductStock++;
}
}
for (var i = 1; i <= rangeRows; i++){
var currentValue = range.getCell(i,2).getValue();
if(currentValue == companyObjective){
numberSoldByCompany++;
}
}
if (numberSoldByCompany === 0){
return 0;
}
else{
return numberSoldByCompany/numberOfProductStock*100; //returns 0/0*100
}
}
功能市场份额(市场目标、公司目标){
var numberSoldByCompany=0;
var numberOfProductStock=0;
var range=SpreadsheetApp.getActiveSheet().getRange('A110:B244');
var rangeRows=134;
var-rangeColumn=2;
对于(var i=1;i请确保不要将赋值运算符=
与相等运算符=
或严格相等运算符混淆。后者不仅比较值,还比较类型。例如,虽然0=='0'
为true,但0=='0'
为false
...
for (var i = 1; i <= rangeRows; i++){
var currentValue = range.getCell(i,1).getValue();
if(currentValue == marketObjective){
// if you wanted to use strict equality here,
// you need to fist make sure that supplied
// values from the spreadsheet are the same type as marketObjective
numberOfProductStock++;
}
}
for (var i = 1; i <= rangeRows; i++){
var currentValue = range.getCell(j,2).getValue();
if(currentValue == companyObjective){
numberSoldByCompany++;
}
}
if (numberSoldByCompany === 0){
return 0;
}
else{
return numberSoldByCompany/numberOfProductStock*100;
}
...
。。。
对于(var i=1;i请确保不要将赋值运算符=
与相等运算符=
或严格相等运算符混淆。后者不仅比较值,还比较类型。例如,虽然0=='0'
为true,但0=='0'
为false
...
for (var i = 1; i <= rangeRows; i++){
var currentValue = range.getCell(i,1).getValue();
if(currentValue == marketObjective){
// if you wanted to use strict equality here,
// you need to fist make sure that supplied
// values from the spreadsheet are the same type as marketObjective
numberOfProductStock++;
}
}
for (var i = 1; i <= rangeRows; i++){
var currentValue = range.getCell(j,2).getValue();
if(currentValue == companyObjective){
numberSoldByCompany++;
}
}
if (numberSoldByCompany === 0){
return 0;
}
else{
return numberSoldByCompany/numberOfProductStock*100;
}
...
。。。
对于(if(currentValue=marketObjective)中的(var i=1;i)
如果不比较值,则执行赋值,使用==
进行比较将控制台日志添加到您的条件中以查看哪个条件正在传递。我尝试使用===但仍然不起作用。在if(currentValue=marketObjective)中
您不比较值,您执行赋值,使用====
进行比较,将控制台日志添加到您的条件中,以查看哪个正在传递。我尝试使用===但仍然不起作用。我只是尝试了您的建议,但仍然不起作用。无论如何,谢谢。还有其他想法吗?我只能看到您的条件不是真的,因此,不更新值,并且它们始终保持0。您能确认您的条件为真吗?Doconsole.log(currentValue==marketObjective?'true':'False')
刚刚再次检查,你是对的!它现在可以工作了,非常感谢!我刚刚尝试了你的建议,但仍然不起作用。无论如何,谢谢。还有其他想法吗?我只能看到你的条件不是真的,因此不更新值,它们一直保持为0。你能确认你的条件是真的吗?执行控制台。log(currentValue==marketObjective?'True':'False')
刚刚再次检查,您是对的!它现在可以工作了,非常感谢!