如果单元格的颜色是某种颜色,请删除Google Spreadsheets中的一行

时间:2017-06-02 15:51:28

标签: google-apps-script google-sheets google-apps

所以我现在对这个问题进行了一段时间的讨论,而不是百分之百地确定为什么这段代码不起作用。

我从之前的SO帖子中获取了代码,从那里我改变了脚本以完成我需要的操作。

function onOpen() {
  // get active spreadsheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  // create menu
  var menu = [{name: "Evaluate Column J/Call Duration", functionName: "deleteRow"}];

  // add to menu
  ss.addMenu("Delete Calls Under 1 Minute", menu);
}

function deleteRow() {
  // get active spreadsheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();

 // get active/selected row
  var activeRow = ss.getActiveRange().getRowIndex();

  // get content column J
  var columnJ = ss.getRange("J"+activeRow).getFontColor();

  // evaluate whether cell has white text or not
  if (columnJ == 'white' || columnJ == '#FFFFFF') {
    ss.deleteRow(parseInt(activeRow));
  }
}

基本上我有一个从超级古老的呼叫跟踪软件导出的电子表格。我们的主要问题是我们需要取出任何不到1分钟的电话和任何重复的电话。因此,我们为两者添加了条件格式。这是为了摆脱任何1分钟的呼叫,这反过来应该删除整行。

有人对此有任何想法吗?谢谢你们。

1 个答案:

答案 0 :(得分:1)

第j列是10.颜色在' #ffffff'格式。红色是#ff0000'。此函数将删除所选列中具有所选颜色的行。

  function jakeDeleteRow(column,color) {
  var column = (typeof(column)!='undefined')?column:10;
  var color = (typeof(color)!='undefined')?color:'#ff0000; 
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sht = ss.getActiveSheet();
  var rng = ss.getDataRange();
  var rngA = rng.getBackgrounds()
  for(var i=rngA.length-1;i>-1;i--)
  {
    if(rngA[i][column-1]==color)
    {
      sht.deleteRow(i+1);
    }
  }
}