Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.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 删除列a中没有任何内容的行的背景色_Javascript_Google Sheets - Fatal编程技术网

Javascript 删除列a中没有任何内容的行的背景色

Javascript 删除列a中没有任何内容的行的背景色,javascript,google-sheets,Javascript,Google Sheets,仅当列“a”不为空时,脚本才会基于列“T”中的指定值在行中的非空单元格中添加单元格背景色。我遇到的问题是,脚本没有检查列“A”,如果列“A”中没有值,则删除行的背景色。我想看看是否有人能告诉我哪里出了问题,在脚本的底部,我让它检查列“A”,然后将背景设置为“无”。是否仍要优化此脚本?运行此脚本需要一段时间 函数颜色(){ var ss=SpreadsheetApp.getActiveSpreadsheet(); var sheet_name=[“当前销售”、“待定订单”、“分包订单”、“部分装

仅当列“a”不为空时,脚本才会基于列“T”中的指定值在行中的非空单元格中添加单元格背景色。我遇到的问题是,脚本没有检查列“A”,如果列“A”中没有值,则删除行的背景色。我想看看是否有人能告诉我哪里出了问题,在脚本的底部,我让它检查列“A”,然后将背景设置为“无”。是否仍要优化此脚本?运行此脚本需要一段时间

函数颜色(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet_name=[“当前销售”、“待定订单”、“分包订单”、“部分装运”、“报价”、“存档销售”];

对于(s=0;s如果有一个数组的值为T(TArr),另一个数组的值为相应颜色(CArr),顺序相同,则可以这样设置颜色:在TArr中查找T值的索引,如果A不为空,则将颜色设置为CArr[index],否则设置为“none”

每行只需检查一个单元格T,即可找到相应的颜色

var cIndex;
var cColor;
var TArr = ['Complete', 'Revise', ...];
var CArr = ['#99FF99', 'FA5959', ...];

for (var i = 0; i < values.length; i++) {
  // find index of status (T) in TArr
  cIndex = TArr.indexOf(values[i][19]);
  // find the corresponding color in CArr
  cColor = ((cIndex != -1) && (cIndex < CArr.length)) ? CArr[cIndex] : 'none';
  for (var j = 0; j < values[i].length; j++) {
    if (values[i][0] !== "") {  // if A is not empty
      if (values[i][j] !== "") { // if cell is not empty, set color        
        range.getCell(i + 1, j + 1).setBackground(cColor);
      }
    } else { // A is empty
      range.getCell(i + 1, j + 1).setBackground('none');
    } 
  }
}
var-cIndex;
变色变种;
var TArr=[“完成”、“修订”、“修改”…];
var-CArr=['#99FF99',FA5959',…];
对于(变量i=0;i
我得到了修复代码的帮助。这是大大缩短执行时间的工作脚本。@Olafant,非常感谢您的帮助

函数SetFormatting(){
SpreadsheetApp.getUi()
.createMenu(“应用边框/颜色”)
.addItem('Set Borders','bordersNoArg')
.addSeparator()
.add子菜单(SpreadsheetApp.getUi().createMenu('Apply Colors'))
.addItem('Apply Colors','colorsNoArg'))
.addToUi();
}
函数边框(工作表名称){
var ss=SpreadsheetApp.getActiveSpreadsheet();

对于(s=0;s,值与[i][j]之间有一个空格在最后一个if语句中。要检查是否没有值,然后删除背景吗?在else部分,我添加了,并且没有删除空行的背景色。请参阅更新。还有更多需要改进的地方。我只是不知道确切的情况,什么样的数据等等。您可以为[I][19]中的值创建一个数组和相应的颜色,然后在循环中设置颜色,而不是一次又一次地检查该值。我一直在尝试为[I][19]中的值创建一个数组,但还没有弄清楚如何执行soI。我还没有弄清楚,您在那里尝试执行什么操作。如果[I][0]如果为空,则行中的所有单元格都不应具有背景颜色?难道您没有试图实现的目标的图像吗?我的代码中只添加了不必要的内容。不需要清除所有不包含数据的单元格的背景,因为这里的范围正确设置为I。因为I和j从来都不是字符串,所以解析没有意义对它们进行整型运算,但会降低性能。getBackgrounds()然后检查CArr[cIndex]根本不会提高性能。发布并接受这一结果并不表示对我为帮助您所做的努力的任何赞赏。@Olafant我删除了已接受的答案,您能否扩展代码?我无法使您的代码成功运行。