尝试通过打开的工作表循环 setFormula()

Trying to loop setFormula() through open sheets

我正在使用一个附加组件 (toTabs),它根据 H 列中的值分隔 sheet 数据。它为 [=] 中的每个唯一值生成一个新的 sheet 18=],然后在每个 sheet 的单元格 A2 中放置一个 filter()。这非常有效,除了我的下一步是将每个 sheet 导出到 .csv,我需要在这样做之前摆脱 H:H。

我正在尝试编写一个脚本,将每个过滤器从 A2:H 更改为 A2:G 并忽略公式的其余部分,或者将过滤器搜索的文本替换为 sheet 名称,然后循环遍历每个 sheet,特定的 sheet 除外。我觉得我已经完成了 95%,但循环运行不正常。这是我目前所拥有的:

function Loop() {
  var ss = SpreadsheetApp.getActive();
  var allsheets = ss.getSheets();

  // Array holding the names of the sheets to exclude from the execution
  var exclude = ["Raw Input","Remove Chuff","Filtered Input","Final Input","Data Values","blank","totabs"];

  for(var s in allsheets){
    var sheet = allsheets[s];

    // Stop iteration execution if the condition is meet.
    if(exclude.indexOf(sheet.getName())==-1) continue;

  var cell = s.getRange("A2");
  cell.setFormula('=Filter(\'Data Values\'!A2:G,\'Data Values\'!H2:H="'+ SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName() + '")');
  s.getRange('H:H').activate();
  s.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
  s.getRange('F:F').activate();
  s.getActiveRangeList().setNumberFormat('00000');

  }
} 

Here's 隐藏所有不相关选项卡的文件副本。欢迎任何帮助。

试试这个:

function Loop() {
  var ss=SpreadsheetApp.getActive();
  var allsheets = ss.getSheets();
  var exclude = ["Raw Input","Remove Chuff","Filtered Input","Final Input","Data Values","blank","totabs"];
  for(var i=0;i<allsheets.length;i++){
    var sheet = allsheets[i];
    if(exclude.indexOf(sheet.getName())!=-1) continue;
    sheet.getRange("A2").setFormula('=Filter(\'Data Values\'!A2:G,\'Data Values\'!H2:H="'+ sheet.getName() + '")');
    sheet.getRange(1,8,sheet.getLastRow(),1).clear({contentsOnly: true, skipFilteredRows: true});
    sheet.getRange(1,6,sheet.getLastRow(),1).setNumberFormat('00000');
  }
}