Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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 当循环超过一个条件并使用两个数组作为输入时,如何更改Google Apps脚本中的背景色?_Javascript_Arrays_Loops_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 当循环超过一个条件并使用两个数组作为输入时,如何更改Google Apps脚本中的背景色?

Javascript 当循环超过一个条件并使用两个数组作为输入时,如何更改Google Apps脚本中的背景色?,javascript,arrays,loops,google-apps-script,google-sheets,Javascript,Arrays,Loops,Google Apps Script,Google Sheets,请帮助我理解,当使用两个数组作为输入在多个条件上循环时,我需要如何扩展代码以更改Google Apps脚本中的背景颜色 感谢@Cooper的帮助,我成功地编写了这段代码,根据电子表格第7列中的值更改背景颜色 // MY CODE THAT WORKS. function randomcolors2d() { var ss = SpreadsheetApp.getActive(); var sh = ss.getSheetByName('Sheet4'); var rg = sh.ge

请帮助我理解,当使用两个数组作为输入在多个条件上循环时,我需要如何扩展代码以更改Google Apps脚本中的背景颜色

感谢@Cooper的帮助,我成功地编写了这段代码,根据电子表格第7列中的值更改背景颜色

// MY CODE THAT WORKS.
function randomcolors2d() {
  var ss = SpreadsheetApp.getActive();
  var sh = ss.getSheetByName('Sheet4');
  var rg = sh.getDataRange();
  var cA = rg.getBackgrounds();
  var vA = rg.getValues();

  vA.forEach(function(r, i) {
    r.forEach(function(c, j) {
      if (vA[i][6] <= 10) {
        cA[i][6] = "#f4cccc"
      } if (vA[i][6] > 10) {
        cA[i][6] = "#d9ead3"
      }
    });
  });
  rg.setBackgrounds(cA);
}
//我的有效代码。
函数randomcolors2d(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Sheet4');
var rg=sh.getDataRange();
var cA=rg.getBackgrounds();
var vA=rg.getValues();
vA.forEach(函数(r,i){
r、 forEach(函数(c,j){
if(vA[i][6]10){
cA[i][6]=“#d9ead3”
}
});
});
rg.退避地(cA);
}
然而,我的问题是,这个简单的规则不适合我的数据。我的数据中有不同的产品类型,因此需要执行上述操作,但需要迭代不同的产品类型和关键(中值)。在我的例子中,它是4种产品类型和4个中值。但是这个数字可以改变,所以我需要一个更灵活的代码来解释这个问题

没有任何成功,我尝试只使用一个forEach循环,在forEach循环或if语句之前集成另一个for循环,或者使用for循环和map函数的组合

这里只有一个例子来说明我打算做什么。我希望有帮助

// CODE THAT DOES NOT WORK.
var medianResults = [11.0, 45.0, 11.0, 12.0]; // Remember, the length of these to variable can vary!
var productType = ["ProductA", "ProductB", "ProductC", "ProductD"];
// the two arrays I'd like to use for conditioning.


function randomcolors2d() {
  var ss = SpreadsheetApp.getActive();
  var sh = ss.getSheetByName('Sheet4');
  var rg = sh.getDataRange();
  var cA = rg.getBackgrounds();
  var vA = rg.getValues();

  for (v = 0; v < productType.length; v++) { // this does not work, but how to do it?

    vA.forEach(function(r, i) {
      r.forEach(function(c, j) {
        if (vA[i][1] === productType[v] && vA[i][6] <= medianResults[v]) {
          cA[i][6] = "#f4cccc"
        } if (vA[i][1] === productType[v] && vA[i][6] > medianResults[v]) {
          cA[i][6] = "#d9ead3"
        }
      });
    });
  }
  rg.setBackgrounds(cA);
}
//不起作用的代码。
var medianResults=[11.0,45.0,11.0,12.0];//请记住,这些变量的长度可能会有所不同!
var productType=[“ProductA”、“ProductB”、“ProductC”、“ProductD”];
//我想用这两个数组进行调节。
函数randomcolors2d(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Sheet4');
var rg=sh.getDataRange();
var cA=rg.getBackgrounds();
var vA=rg.getValues();
对于(v=0;v
有什么想法吗?我们将非常感谢您的意见

=========================================================================================================================

2020年6月6日编辑:

我尝试了@Cooper提供的代码。以下是我所做的:

function testOfYourCode() {
  var medianResults=[11.0,45.0,11.0,12.0];
  var productType=["ProductA","ProductB","ProductC","ProductD"];
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Copyof01Summary');
  var rg=sh.getDataRange();
  var cA=rg.getBackgrounds();
  var vA=rg.getValues();

  for(let t=0;t<productType.length;t++) { 
    for(let m=0;m<medianResults.length;m++) {
      vA.forEach(function(r, i) {
        r.forEach(function(c, j) {
          if (vA[i][1]==productType[t] && vA[i][6]<=medianResults[m]) {
            cA[i][6]="#d9ead3"
          } if (vA[i][1]==productType[t] && vA[i][6]>medianResults[m]) {
            cA[i][6]="#f4cccc"
          }
        });
      });
    }
  }
  rg.setBackgrounds(cA);
}
函数testOfYourCode(){
var medianResults=[11.0,45.0,11.0,12.0];
var productType=[“ProductA”、“ProductB”、“ProductC”、“ProductD”];
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('CopyOf01 Summary');
var rg=sh.getDataRange();
var cA=rg.getBackgrounds();
var vA=rg.getValues();
对于(t=0;t

function randomcolors2d() {
  var medianResults=[11.0,45.0,11.0,12.0];
  var productType=["ProductA","ProductB","ProductC","ProductD"];
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet4');
  var rg=sh.getDataRange();
  var cA=rg.getBackgrounds();
  var vA=rg.getValues();

  for(let t=0;t<productType.length;t++) { 
    for(let m=0;m<medianResults.length;m++) {
      vA.forEach(function(r, i) {
        r.forEach(function(c, j) {
          if (vA[i][1]==productType[t] && vA[i][6]<=medianResults[m]) {
            cA[i][6]="#f4cccc";//red
          } if (vA[i][1]==productType[t] && vA[i][6]>medianResults[m]) {
            cA[i][6]="#d9ead3";//green
          }
        });
      });
    }
  }
  rg.setBackgrounds(cA);
}

如果它们与每种产品相关,那么通过每种产品对它们进行索引就没有任何意义。这就是编程和合理分析必须结合在一起的地方。如果您不能正确地向我们提供数据,那么我们就帮不上什么忙了。

这样如何:

function randomcolors2d() {
  var medianResults=[11.0,45.0,11.0,12.0];
  var productType=["ProductA","ProductB","ProductC","ProductD"];
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet4');
  var rg=sh.getDataRange();
  var cA=rg.getBackgrounds();
  var vA=rg.getValues();

  for(let t=0;t<productType.length;t++) { 
    for(let m=0;m<medianResults.length;m++) {
      vA.forEach(function(r, i) {
        r.forEach(function(c, j) {
          if (vA[i][1]==productType[t] && vA[i][6]<=medianResults[m]) {
            cA[i][6]="#f4cccc";//red
          } if (vA[i][1]==productType[t] && vA[i][6]>medianResults[m]) {
            cA[i][6]="#d9ead3";//green
          }
        });
      });
    }
  }
  rg.setBackgrounds(cA);
}


如果它们与每种产品相关,那么通过每种产品对它们进行索引就没有任何意义。这就是编程和合理分析必须结合在一起的地方。如果您不能正确地向我们提供数据,那么我们就帮不了什么忙。

我们试图实现什么?与我们共享一张描述您所做的事情的图片怎么样正在尝试实现。如果您不知道想要什么,则循环数据对您没有任何好处。您正在尝试实现什么?与我们共享一个描述您尝试实现什么的图像如何。如果您不知道想要什么,则循环数据对您没有任何好处。Cooper,再次感谢您的帮助。您的代码正是我所需要的。看起来这只是第二个for循环。再次感谢!嘿,库珀,如果你不介意再看一眼你的代码,我编辑了我的问题,并添加了一个使用你的代码时得到的结果的屏幕截图。除了一个例子,你的代码没有产生正确的格式外,所有这些看起来都很好。我刷新了我的谷歌应用程序s脚本多次尝试使用不同的值。但是,结果总是完全相同的。我的ProductB格式错误。你知道为什么会发生这种情况吗?提前感谢你的帮助。这是我最后一次尝试。如果这很有帮助。如果没有,那你就靠自己了。再次感谢你的帮助!我感谢你的帮助e和您为帮助我所付出的努力。关于我没有正确呈现数据:我假设错误可能与我在工作表中格式化数据的方式有关(每个部分之间有4个空格)。这就是为什么我只提供了一个屏幕截图。我本来会与你共享一个链接,但是,正如你的个人资料中所述,你没有跟踪到谷歌工作表的链接。再次,如果我给你带来了任何不便,我深表歉意。库珀,再次感谢你的帮助。你的代码正是我所需要的。看起来,这只是一秒钟的循环时间再次感谢!嘿,库珀,如果你不介意再看一眼你的代码,我编辑了我的问题,并添加了使用你的代码时得到的结果的屏幕截图。除了一个例子,你的代码没有产生正确的格式外,所有这些都看起来不错。我刷新了我的谷歌应用程序脚本好几次,并用不同的t值也一样。但是,结果总是完全一样的。我得到了ProductB的错误格式。你知道为什么会发生这种情况吗?提前感谢你的帮助。这是我最后一次尝试。如果这很有帮助。如果没有,那就靠你自己了。再次感谢你的帮助!我感谢你花时间和精力来帮助我。关于我未正确呈现数据:我假设错误可能与我在工作表中格式化数据的方式有关(每个部分之间有4个空格)。Tha
var pA=[{type:"ProductA",medianResults:11.0},{type:"ProductB",medianResults:45.0},{type:"ProductC",medianResults:11.0},{type:"ProductD",medianResults:12.0}]