是否有功能将我的工作簿中的某些表格从脚本中排除

时间:2019-10-24 13:54:49

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

我正在尝试编写代码,以每周一次基于时间的触发器清除某些数据单元("F2:M95")。一切正常,但我注意到它正在清除工作簿中每个工作表上特定单元格中的数据。

这是我目前拥有的功能:

function LunchEmailClear() {
  var app = SpreadsheetApp;
  var activeSheet = app.getActive()
  activeSheet.getRange("F2:M95").clear();
}

我可以添加些什么,使其仅适用于某些图纸? (即“早晨电子邮件,午餐电子邮件”)

PS。如果我听起来有些傻眼,也很抱歉,上周我才开始弄乱脚本,对自己的工作几乎一无所知。感谢您能提供的任何帮助! :)

2 个答案:

答案 0 :(得分:1)

说明:

我们可以利用JavaScript Array.indexOf()方法来实现这一目标。

在下面的脚本中,我们要包含一组图纸,并将其定义为var include。然后,我们可以使用运行for语句的if循环将此数组与工作表名称进行比较。这会使用Array.indexOf()根据我们的包含数组检查工作表名称。


示例:

function emailClear() {
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();

  //list sheets to include here
  var include = ['Morning Emails', 'Lunch Emails'];

  for (var i = 0; i < sheets.length; i++) {
    if (include.indexOf(sheets[i].getName()) > -1) {
      sheets[i].getRange("F2:M95").clear();
    }
  }
}

参考文献:

答案 1 :(得分:1)

这应该可以正常工作:

function LunchEmailClear() {
  //Add the list of sheets to clean
  var sheets = ['Morning Emails', 'Lunch Emails'] 
  var app = SpreadsheetApp.getActive();

  for (var i=0; i < sheets.length; i++){
    app.getSheetByName(sheets[i]).getRange("F2:M95").clear();
  }
}