Пытаясь l oop setFormula () через открытые листы - PullRequest
1 голос
/ 09 января 2020

Я использую надстройку (toTabs), которая разделяет лист данных на основе значения в столбце H. Он генерирует новый лист для каждого уникального значения в H2: H, а затем помещает фильтр () в ячейка A2 на каждом листе. Это прекрасно работает, за исключением того, что мой следующий шаг - экспортировать каждый лист в .csv, и мне нужно избавиться от H: H перед этим.

Я пытаюсь написать скрипт, который меняет каждый фильтр с От A2: H до A2: G и либо игнорирует остальную часть формулы, либо заменяет текст, который ищет фильтр, на имя листа, затем перебирает все листы, кроме указанных c листов. Я чувствую, что нахожусь на 95% пути, но l oop работает не совсем правильно. Вот что у меня есть:

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');

  }
} 

Вот копия файла со всеми скрытыми вкладками. Любая помощь будет приветствоваться.

1 Ответ

1 голос
/ 09 января 2020

Попробуйте это:

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');
  }
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...