如何使用脚本删除工作表中的条件格式

时间:2016-05-03 13:44:48

标签: google-sheets

我目前正在使用修改后的脚本,允许我从表#1复制整行,在表#2的顶部创建一个新行,将复制的行粘贴到该表,然后删除旧的从表#1开始。 许多用户经常在一天中完成这项工作。该函数是onEdit。

这是剧本:

function onEdit(e) {
  var ss = e.source;
  var activatedSheetName = ss.getActiveSheet().getName();
  var activatedCell = ss.getActiveSelection();
  var activatedCellRow = activatedCell.getRow();
  var activatedCellColumn = activatedCell.getColumn();
  var activatedCellValue = activatedCell.getValue();

  var URGENCE = ss.getSheetByName("List"); // source sheet
  var COMPLET = ss.getSheetByName("Comp"); // target sheet

  // if the value in column K is "x", move the row to target sheet
  if (activatedSheetName == URGENCE.getName() && activatedCellColumn == 11 && activatedCellValue == "x") 
  {
    COMPLET.insertRows(2,1);// insert a new row at the second row of the target sheet
    var rangeToMove = URGENCE.getRange(/*startRow*/ activatedCellRow, /*startColumn*/ 1, /*numRows*/ 1, /*numColumns*/ URGENCE.getMaxColumns()); 
    rangeToMove.moveTo(COMPLET.getRange("A2"));          
    URGENCE.deleteRows(activatedCellRow,1); // delete row from source sheet
  }
}

最近这已经让我的表格崩溃了。每当有人放置" x"在K列中,工作表将停止,大多数情况下,它将崩溃并且chrome将终止页面。

我可能错了,但我猜测的问题是表#1中的大多数行都有条件格式。复制行时,它还复制条件格式。这导致我的表#2有数百个重复的条件格式:这张表打开速度很慢。 IT也可能是因为这个文档与大约30个人共享,他们经常查看和编辑它:也许onEdit在这里不是正确的功能?

是否有一个简单的脚本可以添加到我的函数中,它会剥离粘贴行上的条件格式?我不需要在表单#2中使用条件格式,出于某种奇怪的原因,我无法在任何地方找到答案。

1 个答案:

答案 0 :(得分:1)

找到此功能from here.

  

<强> clearFormats()

     

清除格式表,同时保留内容。格式化   指的是如何将数据格式化为允许的数据   “格式”菜单(例如:粗体,斜体,条件格式)而不是   细胞的宽度或高度。

示例代码:

function testKillFormatting (nameOfSheet) {

   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var sheet = ss.getSheetByName(nameOfSheet);
   sheet.clearFormats();

  }