Javascript 我的变量在电子表格脚本部分的for循环中更改后重置

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

我不熟悉javascript,但对C#有一些经验。所以我想写一个脚本来帮助我计算一种类型的产品销售了多少,以及某家公司销售了多少。目标是为与参数market companyObjective具有相同值的每一行向变量numberSoldByCompany添加一个。变量numberOfProductStock和参数marketObjective也是如此。 问题是,在我退出每个for循环后,这些变量重置为0。有什么想法吗

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。您能确认您的条件为真吗?Do
console.log(currentValue==marketObjective?'true':'False')
刚刚再次检查,你是对的!它现在可以工作了,非常感谢!我刚刚尝试了你的建议,但仍然不起作用。无论如何,谢谢。还有其他想法吗?我只能看到你的条件不是真的,因此不更新值,它们一直保持为0。你能确认你的条件是真的吗?执行
控制台。log(currentValue==marketObjective?'True':'False')
刚刚再次检查,您是对的!它现在可以工作了,非常感谢!