Массовое удаление просмотров фильтров в Google Sheets - PullRequest
0 голосов
/ 11 февраля 2019

Я нашел эту старую ветку , но не могу заставить работать какой-либо из методов.

Проблема: у меня есть электронная таблица, которую используют десятки людей, и со временем там естьБыло> ​​200 Просмотр фильтра создано.Я хочу массово удалить ВСЕ Фильтры с одного листа в рабочей книге.

Я попробовал этот метод после включения API Google Sheets.Он работает, но, увы, все Filter View остаются.

function clearFilter() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var ssId = ss.getId();
    var sheetId = ss.getActiveSheet().getSheetId();
    var requests = [{
        "clearBasicFilter": {
        "sheetId": sheetId
        }
    }];
    Sheets.Spreadsheets.batchUpdate({'requests': requests}, ssId);
}

Спасибо всем

Изображение представлений фильтра:

Image of Filter Views

1 Ответ

0 голосов
/ 11 февраля 2019

Выпуск:

  • Вы отправляете запрос на очистку фильтра, который очищает только текущий фильтр

Решение:

  • Вывместо этого необходимо выдать deleteFilterView запрос

Пример кода:

function delFilterViews() {
  var ssId = SpreadsheetApp.getActive().getId();
  Sheets.Spreadsheets.batchUpdate(
    {
      requests: Sheets.Spreadsheets.get(ssId, {
        ranges: 'Sheet1', //Sheet in which filterviews are present
        fields: 'sheets/filterViews/filterViewId',
      }).sheets[0].filterViews.map(function(e) {
        return { deleteFilterView: { filterId: e['filterViewId'] } }; //create a new delete filter view request for each filter view present in sheet1
      }),
    },
    ssId
  );
}

Ссылки:

...