Автогруппировка строк

Есть список в котором находится столбец с числовыми пунктами. У каждого пункта может быть подпункт. У каждого подпункта может быть свой подпункт и т.д (см. приложение 1). Глубина подпунктов определяется точкой.

Нужна помощь с кодом к appscripts для автогруппировки всех пунктов и подпунктов. Насколько я понял, это можно провернуть с помощью следующих методов: Class Group и Class Range.

Алгоритм создания групп, скорее всего, будет строится на количестве точек в подпункте. Если в пункте на следующей строке точек больше, то он попадает в подгруппу для предыдущего пункта и т.д.

В результате, конечная группировка будет выглядеть следующим образом (см. приложение 2)

1 2


Ответы (1 шт):

Автор решения: contributorpw

Основной алгоритм должен быть таким:

  • Взять все
  • Сортировать
  • Идти по дереву, исключая элементы без детей
  • Формализовать дерево для метода группировки
  • Снять все текущие группировки
  • Применить новые группировки

В идеале при формализации нужно для каждой группы создать запрос вида

{
    "updateDimensionGroup": {
        "dimensionGroup": {
            "range": {
                "sheetId": <sheet_guid>,
                "dimension": "ROWS",
                "startIndex": 2,
                "endIndex": 5
            },
            "collapsed": true,
            "depth": 1
        },
        "fields": "collapsed"
    }
}

Запросы на обновление нужно отправлять пакетным методом.

→ Ссылка