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