Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Фильтры массового удаления в Google Таблицах

Автор вопроса: Jesse EricksenОтветов: 1

Я нашел этот старый thread, но, похоже, не удается заставить работать ни один из методов.

Проблема. У меня есть таблица, которой пользуются десятки людей, и со временем было создано ›200 представлений с фильтрами. Я хочу массово удалить ВСЕ Filter View с одного листа в книге.

Я пробовал этот метод после включения API Google Таблиц. Он работает, но, увы, все Фильтры остаются.

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

Спасибо всем

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

google-sheetsgoogle-apps-scriptgoogle-sheets-apigoogle-sheets-filter-view

Ответы

Ответ 1 · рейтинг 2 · TheMaster

Проблема

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

Решение

  • Вместо этого вы должны отправить 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
  );
}

Использованная литература

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы