如何从脚本中排除工作表

时间:2017-09-09 19:05:46

标签: javascript sorting google-sheets google-sheets-api pause

我写了一个简单的脚本来自动对各种表格中的新输入进行排序,但我想排除第一张表格。这是我的剧本:

function onEdit(){
  var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var editedCell = sh.getActiveRange().getColumnIndex();

  if(editedCell == 2) { 

    var range = sh.getRange("A3:P20");
    range.sort({column: 2});
  }
}

因此,如果我在处理前两页时使用.getActiveSheet(),脚本将完成它的工作,但不需要。我可以停止剧本,暂停吗? 谢谢你的回复。 贝

2 个答案:

答案 0 :(得分:0)

这将使您无法使用前两张纸。你也可以使用他们的名字,因为如果你移动它们,那么前两张将改变。函数isOneOfTheFirstTwo如下所述:

function onEdit(e){
  if(!isOneOfFirstTwo(e.source.getActiveSheet()))
  {
    var editedCell = sh.getActiveRange().getColumnIndex();
    if(editedCell == 2) 
    { 
      var range = sh.getRange("A3:P20");
      range.sort({column: 2});
    }
  }
}

下面的函数从电子表格中获取所有工作表的数组,并查看前两个电子表格左侧的前两个工作表。如果你移动它们,那么前两张纸将会改变。任何方式我只看和前两个并问问题是sh.getName()== allSheets [i]如果前两个中的任何一个回答是,则函数返回true,否则返回false。循环不会超过前两张。

function isOneOfFirstTwo(sh)
{
  var allSheets=SpreadsheetApp.getActive().getSheets();
  var r=false;
  for(var i=0;i<2;i++)
  {
    if(sh.getName()==allSheets[i].getName())
    {
      r=true;
      break;
    }
  }
  return r;
}

答案 1 :(得分:0)

谢谢你的回答。 我真的是一个新手,并试图将你的代码放入我的,但我在调试时遇到了错误。是否可以将您的脚本完全放入我的脚本中。我想我试图把它弄错了。

function isOneOfFirstTwo(sh)
{
  var allSheets=SpreadsheetApp.getActive().getSheets();
  var r=false;
  for(var i=0;i<2;i++)
  {
    if(sh.getName()==allSheets[i].getName())
    {
      r=true;
      break;
    }
  }
  return r;
}

function onEdit(){
   if(!isOneOfFirstTwo(e.source.getActiveSheet()))
  {
  var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var editedCell = sh.getActiveRange().getColumnIndex();

  if(editedCell == 2) { 

    var range = sh.getRange("A3:P20");
    range.sort({column: 2});
  }
 }
}