Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.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
Google apps script 如何使用GAS/App脚本在googlesheets中设置过滤行的背景色_Google Apps Script_Google Sheets_Background Color - Fatal编程技术网

Google apps script 如何使用GAS/App脚本在googlesheets中设置过滤行的背景色

Google apps script 如何使用GAS/App脚本在googlesheets中设置过滤行的背景色,google-apps-script,google-sheets,background-color,Google Apps Script,Google Sheets,Background Color,我有一个GoogleSheets文件,我在其中根据单列标准过滤行。如果列中的某个单元格为空,我将过滤整行。但现在我的问题是,我试图设置过滤行的背景色。但在尝试以下代码时,我不断遇到以下错误:“TypeError:rows.filter(…).setBackground不是函数”: var mydata3 = rows.filter(row => row[8] == '').setBackground("red"); 有人知道我如何做到这一点吗?或者有什么解决办法吗?因

我有一个GoogleSheets文件,我在其中根据单列标准过滤行。如果列中的某个单元格为空,我将过滤整行。但现在我的问题是,我试图设置过滤行的背景色。但在尝试以下代码时,我不断遇到以下错误:“TypeError:rows.filter(…).setBackground不是函数”:

var mydata3 = rows.filter(row => row[8] == '').setBackground("red");
有人知道我如何做到这一点吗?或者有什么解决办法吗?因为我可以看到setBackground不是mydata3的数据类型,它基本上是一个过滤行

谢谢

   var sss = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; 
   var sheetID = sss.getSheetId(); // get the id of first page
   var values = sss.getDataRange().getValues();
   var getRangeRow2 = sss.getDataRange().getRow()[5]; 
   var getRangeCol2 = sss.getDataRange().getColumn()[1]; 
   function insertRecord() {  
      var sheet_1 = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
      var headerRowNumber = 3;
      var rows = sheet_1.getDataRange().offset(headerRowNumber, 0, sheet_1.getLastRow() - 
      headerRowNumber).getValues();
      var mydata3 = rows.filter(row => row[8] == '');
   }
试着这样做:

function insertRecord() {
  const ss=SpreadsheetApp.getActive();
  const sh=ss.getSheets()[0];
  const rg=sh.getRange(3,1,sh.getLastRow()-2,sh.getLastColumn());
  let vs=rg.getValues()
  var rows=vs.map(function(r,i){
    if(r[8]=='') {
      sh.getRange(i+3,1,1,sh.getLastColumn()).setBackground('#ff0000');
      return r;
    }
  }).filter(function(e){return e;});
  console.log(rows);
}

为什么不使用公式?对不起,兄弟,但这不起作用。我所要做的就是将过滤后的行更改为背景色。对不起,库珀,还有一个问题。是否有一种方法可以对背景颜色的行进行排序?谢谢。如果我理解你的要求,你将不得不根据背景颜色对数据进行排序,同时你也会对背景颜色进行排序,以便它们随数据移动。您可能可以使用排序函数实现这一点。以下是我目前获得的排序函数,但不知道如何告诉它对红色行进行排序:sort\u DATA\u RANGE=“A4:J999”;var SORT_ORDER=[{列:8,升序:true}];函数multiSortColumns(){var ss=SpreadsheetApp.getActiveSpreadsheet();var sheet=ss.getSheetByName(sheet_NAME);var SORT_DATA_RANGE=“A4:I”;var RANGE=sheet.getRange(SORT_DATA_RANGE);RANGE.SORT(SORT_ORDER);ss.toast('SORT complete');}我说的是从getValues对数据数组和背景数组进行排序()和getBackgrounds();