Обновлять более 1 сводной таблицы одновременно - PullRequest
0 голосов
/ 14 июля 2020

В настоящее время я использую сценарий, который меняет фильтры многих сводных таблиц (около 11) один за другим по порядку, что занимает очень много времени. Насколько мне известно, в Google App Script изменение фильтра означает удаление сводной таблицы и создание новой с новыми фильтрами.

Я пытаюсь создать код, который изменяет фильтр всех сводных таблиц в то же время. Есть ли способ сделать это, например, создать код, который запускает 11 сценариев (по 1 для каждой сводной таблицы) одновременно или что-то в этом роде?

Вот мой текущий сценарий:

    function REFRESH_PL() {
  var cons = SpreadsheetApp.openById("xxx"); //my spreadsheet
  var funds = ["P&L PLEN","P&L SELET","P&L PRISM","P&L TOR","P&L RTSC","P&L FIMEMP","P&L FIIEMP","P&L FIPST","P&L FIPLT", "P&L FICFIMLT", "P&L ANK"]; //the sheets
  var filters1 = ["PLEN","SELET","PRISM",'TORD','RTSC','FIMEMP','FIIEMP','FIPST','FIPLT','FICFIMLT','ANK'] //some filters I DON'T WANT to change
  var dates = cons.getSheetByName("Check").getRange("E4:E14").getValues() //the filters I WANT to change/update
  
  for (var i in funds){
    var date = dates[i][0]
    var aba = cons.getSheetByName(funds[i]);
    aba.getRange("I14").activate() //Cell in which is the pivot table
    aba.getRange("I14").getValue()
    var fonte = aba.getRange('\'Consolidado_BD (2)\'!A:V'); //pivot tables source
    var pvt = aba.getRange('G13').createPivotTable(fonte); //pivot tables
    var pivotValue = pvt.addPivotValue(14, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
    var pivotGroup = pvt.addRowGroup(4);
    pivotGroup.showTotals(false);
    pivotGroup = pvt.addRowGroup(7);
    pivotGroup.showTotals(false);
    pivotGroup = pvt.addColumnGroup(2);
    pivotGroup.showTotals(false);
    var filter = SpreadsheetApp.newFilterCriteria() //Adding the filters I want to change
    .setVisibleValues(['30/06/2020',date])
    .build();
    pvt.addFilter(2, filter);
    filter = SpreadsheetApp.newFilterCriteria()
    .setVisibleValues([filters1[i]])
    .build();
    pvt.addFilter(3, filter); //Adding the filters I don't want to change (they keep the same)
    SpreadsheetApp.flush()
}};
...