Итеративная фильтрация сводной таблицы в Google App script

#google-apps-script #google-sheets

#google-apps-script #google-таблицы

Вопрос:

У меня был код, который помогал мне сохранять в формате PDF список счетов. Я делал это, просматривая список наших клиентов и фильтруя «сводную таблицу счетов» с идентификатором клиента, а затем сохраняя результирующую сводную таблицу в формате PDF.

С прошлой недели мой поток больше не работает. Я провел некоторое тестирование и в конечном итоге понял, что не работает эта функция updateFilteredPivot(). Фильтр применяется только при первом запуске итерации, когда в сводной таблице нет активного фильтра. Есть идеи о том, что могло измениться и как обойти эту проблему?

 function updateFilteredPivotTable(lastRow, filter, pivotTableSheetName) {
  var lastRow = lastRow
  var filter = filter.toString()
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var pivotTableSheetName = pivotTableSheetName
  var pivotTableSheetId = ss.getSheetByName(pivotTableSheetName).getSheetId();
  var fields = "sheets(properties.sheetId,data.rowData.values.pivotTable)";
  var sheets = Sheets.Spreadsheets.get(ss.getId(), {fields: fields}).sheets; 
  for (var i in sheets) {
    if (sheets[i].properties.sheetId == pivotTableSheetId) {
      var pivotTableParams = sheets[i].data[0].rowData[0].values[0].pivotTable;
      break;
    }
  }
  
  // Update source range:
  pivotTableParams.source.endRowIndex = lastRow  ; // improve get last row with data in column A
  pivotTableParams.criteria = { 26: {"visibleValues": [filter]}}; // set filter field column 26 equal to filter
  
  // Send back the updated params
  var request = {
    "updateCells": {
      "rows": {
        "values": [{
          "pivotTable": pivotTableParams
        }]
      },
      "start": {
        "sheetId": pivotTableSheetId
      },
      "fields": "pivotTable",     
    }
  };
  
  Sheets.Spreadsheets.batchUpdate({'requests': [request]}, ss.getId());
}
  

Комментарии:

1. Вы получаете какую-либо ошибку? Если я правильно понял, это заканчивается на первом листе, верно? Не могли бы вы поделиться примером этого?

2. я не получаю никакой ошибки. Просто итерация продолжается, но печать одной и той же сводной таблицы повторяется. Этот сценарий выше больше не обновляет сводную таблицу после первой итерации. Я провел некоторый тест, и аргументы, переданные функции, верны, но обновление не происходит. Конечный результат, который я получаю, — это тот же PDF, умноженный на количество итераций.