Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript appsScript在一个范围内循环的优雅方式_Javascript_Arrays_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript appsScript在一个范围内循环的优雅方式

Javascript appsScript在一个范围内循环的优雅方式,javascript,arrays,google-apps-script,google-sheets,Javascript,Arrays,Google Apps Script,Google Sheets,有没有一种优雅的方法可以做到这一点: function calculateTotal(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); var total =0; for (i=3;i<=60;i++) { total=0; for (j=3;j<=234;j++) { if (sheet.getRange("

有没有一种优雅的方法可以做到这一点:

function calculateTotal(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var total =0;
 
  for (i=3;i<=60;i++) {
    total=0;
    for (j=3;j<=234;j++) {
      if (sheet.getRange("B"+j).getValue() == sheet.getRange("J"+i).getValue() && 
         (sheet.getRange("B"+j).getFontLines() != 'line-through') ) {
        total++;
      }
      if (sheet.getRange("C"+j).getValue() == sheet.getRange("J"+i).getValue() && 
         (sheet.getRange("C"+j).getFontLines() != 'line-through') ) {
        total++;
      }
      if (sheet.getRange("D"+j).getValue() == sheet.getRange("J"+i).getValue() && 
         (sheet.getRange("D"+j).getFontLines() != 'line-through') ) {
        total++;
      }
      if (sheet.getRange("E"+j).getValue() == sheet.getRange("J"+i).getValue() && 
         (sheet.getRange("E"+j).getFontLines() != 'line-through') ) {
        total++;
      }
      if (sheet.getRange("F"+j).getValue() == sheet.getRange("J"+i).getValue() && 
         (sheet.getRange("F"+j).getFontLines() != 'line-through') ) {
        total++;
      }
      if (sheet.getRange("G"+j).getValue() == sheet.getRange("J"+i).getValue() && 
         (sheet.getRange("G"+j).getFontLines() != 'line-through') ) {
        total++;
      }
      if (sheet.getRange("H"+j).getValue() == sheet.getRange("J"+i).getValue() && 
         (sheet.getRange("H"+j).getFontLines() != 'line-through') ) {
        total++;
      }
    }
    sheet.getRange("K"+i).setValue(total);
  } 
}

我可以编写函数来检查需要的颜色,但必须有更好的方法在列上循环,然后在表/范围上循环。

因为我们只是在对B-H反复执行,所以让我们在数组中声明它,然后循环数组。这是最简单的方法,与您正在做的完全相同(只是更短,冗余更少)

函数calculateTotal(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getActiveSheet();
var合计=0;
var列=['B','C','D','E','F','G','H'];

对于(i=3;i由于我们只是一次又一次地对B-H进行操作,所以让我们在一个数组中声明它,然后循环该数组。这是最简单的方法,与您所做的完全相同(只是更短,冗余更少)

函数calculateTotal(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getActiveSheet();
var合计=0;
var列=['B','C','D','E','F','G','H'];

对于(i=3;i基于上述内容,并与我的一位朋友(Kyley Harris)交谈,这里有一种更明智的方法来实现这个循环:

function calculateTotals(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var total, clientID,cellValues,cellFontLines;

  for (i=3;i<=60;i++) {
    sheet.getRange("K"+i).setValue("calculating");
    clientID=sheet.getRange("J"+i).getValue();
    total=0;
    cellValues=sheet.getRange("B3:H234").getValues();
    cellFontLines=sheet.getRange("B3:H234").getFontLines();
    
    for (j=0;j<=6;j++) {
      for (k=0;k<=231;k++) {
        if (cellValues[k][j] == clientID && cellFontLines[k][j] != 'line-through' ) {
          total++;
        }
      }
    }
    sheet.getRange("K"+i).setValue(total);
  } 
}
函数calculateTotals(){
var sheet=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var总计、clientID、cellValues、cellFontLines;

对于(i=3;i基于上述内容,并与我的一位朋友(Kyley Harris)交谈,这里有一种更明智的方法来实现这个循环:

function calculateTotals(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var total, clientID,cellValues,cellFontLines;

  for (i=3;i<=60;i++) {
    sheet.getRange("K"+i).setValue("calculating");
    clientID=sheet.getRange("J"+i).getValue();
    total=0;
    cellValues=sheet.getRange("B3:H234").getValues();
    cellFontLines=sheet.getRange("B3:H234").getFontLines();
    
    for (j=0;j<=6;j++) {
      for (k=0;k<=231;k++) {
        if (cellValues[k][j] == clientID && cellFontLines[k][j] != 'line-through' ) {
          total++;
        }
      }
    }
    sheet.getRange("K"+i).setValue(total);
  } 
}
函数calculateTotals(){
var sheet=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var总计、clientID、cellValues、cellFontLines;
对于(i=3;i
function calculateTotals(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var total, clientID,cellValues,cellFontLines;

  for (i=3;i<=60;i++) {
    sheet.getRange("K"+i).setValue("calculating");
    clientID=sheet.getRange("J"+i).getValue();
    total=0;
    cellValues=sheet.getRange("B3:H234").getValues();
    cellFontLines=sheet.getRange("B3:H234").getFontLines();
    
    for (j=0;j<=6;j++) {
      for (k=0;k<=231;k++) {
        if (cellValues[k][j] == clientID && cellFontLines[k][j] != 'line-through' ) {
          total++;
        }
      }
    }
    sheet.getRange("K"+i).setValue(total);
  } 
}