Как экспортировать теги AEM в Excel

Вчера мне пришлось экспортировать все теги AEM в файл Excel. При поиске лучшего решения для этого я обнаружил, что почти все советуют писать собственный код, который берет все теги и вводит их в файл Excel.

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

Для них давайте поделимся некоторыми обходными путями для этой проблемы.


person Tadija Malić    schedule 05.04.2019    source источник


Ответы (4)


Чтобы получить список тегов, разделенных запятыми, я бы рекомендовал использовать командную строку, встроенный построитель запросов AEM, curl и jq (https://stedolan.github.io/jq/).

Общий подход:

  1. Используйте построитель запросов, чтобы создать JSON-представление /etc/tags.
  2. Используйте curl, чтобы «загрузить» JSON
  3. Используйте jq для «анализа» JSON и создания CSV

Пример:

Экспорт всех тегов ниже /etc/tags с их путем, заголовком и описанием будет выглядеть следующим образом:

curl \
    --user admin:admin \
    --silent \
    "http://localhost:4502/bin/querybuilder.json?p.hits=selective&p.limit=-1&p.properties=jcr%3atitle%20jcr%3apath%20jcr%3adescription&path=%2fetc%2ftags&type=cq%3aTag" \
    | jq --raw-output '.hits[] | [."jcr:path", ."jcr:title", ."jcr:description"] | @csv' \
    > tags.csv

Это отправит запрос GET на ваш локальный экземпляр AEM (http://localhost:4502), аутентифицируется как пользователь admin с паролем admin (настройки по умолчанию для AEM), использует API построителя запросов (/bin/querybuilder.json), чтобы получить все ресурсы с типом cq:Tag ниже /etc/tags и этих ресурсов. он "выберет" свойства jcr:path, jcr:title и jcr:description.

Полученный JSON выглядит так:

{
  "success": true,
  "results": 2,
  "total": 2,
  "more": false,
  "offset": 0,
  "hits": [
    {
      "jcr:path": "/etc/tags/experience-fragments",
      "jcr:description": "Tag structured used by the Experience Fragments feature",
      "jcr:title": "Experience Fragments"
    },
    {
      "jcr:path": "/etc/tags/experience-fragments/variation",
      "jcr:description": "A tag used by the experience fragments variations",
      "jcr:title": "Variation"
    },
  ]
}

Затем приведенная выше команда передаст полученный JSON из построителя запросов в jq, который будет использовать «запрос» .hits[] | [."jcr:path", ."jcr:title", ."jcr:description"] для чтения только массива hits и каждого элемента в этом массиве только jcr:path, jcr:title и jcr:description. Результирующие массивы затем используются в качестве входных данных для @csv "форматирования строк" jq, который создаст правильный вывод с разделителями-запятыми.

JSON сверху будет отформатирован так:

"/etc/tags/experience-fragments","Experience Fragments","Tag structured used by the Experience Fragments feature"
"/etc/tags/experience-fragments/variation","Variation","A tag used by the experience fragments variations"

Последняя часть команды > tags.csv просто перенаправит вывод в файл с именем tags.csv вместо командной строки.

В AEM есть отладчик построителя запросов, который вы можете использовать для создания запросов, которые затем можно использовать в вашей команде командной строки:

http://localhost:4502/libs/cq/search/content/querydebug.html

Параметры запроса, которые я использовал выше, будут выглядеть в инструменте следующим образом:

path=/etc/tags
type=cq:Tag
p.hits=selective
p.limit=-1
p.properties=jcr:title jcr:path jcr:description

Вы можете добавлять свойства по своему усмотрению, но чтобы они отображались в CSV, вам также необходимо обновить запрос, используемый jq.

Если вы добавите переводы в свои теги, они будут храниться в свойстве с именем jcr:title.<language-code>. Например, если вы переведете свои теги на немецкий язык, у вас будет два свойства: jcr:title и jcr:title.de. Если вам нужен перевод, вы должны расширить p.properties и добавить jcr:title.de и т. д.

person Jens    schedule 05.04.2019
comment
Очень хорошо! Я не знал об этом варианте, и я думаю, что он отвечает на этот вопрос даже лучше, чем мой ответ. - person Tadija Malić; 05.04.2019
comment
Есть ли возможность узнать, сколько раз каждый тег упоминается таким образом? - person Tadija Malić; 07.04.2019

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

Чтобы экспортировать теги AEM, выполните следующие 5 шагов:

  1. Откройте диспетчер пакетов.
  2. Создайте пакет (дайте ему понятное имя)
  3. Edit created package
  4. Готово, Сохранить
  5. Создать пакет
  6. Загрузить пакет

Тогда у вас есть все теги внутри {download_package_name}/jcr_root/etc/tags.

Теперь есть несколько способов загрузить загруженные теги в файл Excel. Вот как это сделать в Windows -

Источник: Есть ли способ экспортировать структуру папок в Excel?

Найдите папку в проводнике Windows, затем щелкните правой кнопкой мыши по этой папке, удерживая клавишу Shift, и выберите «Открыть окно команд здесь». Введите следующее приглашение:

каталог /a /s /b > список файлов.txt

Это дает вам текстовый файл, сохраненный в вашей верхней папке, который вы можете открыть в блокноте, а затем скопировать и вставить в документ Excel.

person Tadija Malić    schedule 05.04.2019

В AEM есть графический интерфейс для экспорта контента в формате Excel [ну почти]. Чтобы получить tsv-файл тегов в системе, можно использовать массовый редактор AEM. Перейдите к «/etc/importers/bulkeditor.html» на сервере. Задайте путь как «/etc/tags» или поддерево. В поле запроса введите «тип: Тег». Выберите свойства, которые необходимо экспортировать, и нажмите «Поиск». Затем результаты можно экспортировать в файл tsv с помощью кнопки экспорта.

введите здесь описание изображения

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

person Sharath Madappa    schedule 05.04.2019
comment
Есть ли способ узнать, сколько раз каждый тег упоминается таким образом? - person Tadija Malić; 07.04.2019
comment
попробуйте localhost:4502/etc/tags/. Эта конечная точка даст счет. - person Sharath Madappa; 07.04.2019

У меня нет прав комментировать принятый ответ, но я подумал, что было бы полезно добавить к отличному принятому ответу: если вы используете >= 6.4, вам может потребоваться изменить путь в вашем запросе на /content/ cq:tags (1) или запросите оба пути, если ваша установка была обновлена ​​с течением времени и у вас есть долгоживущие теги. У меня не было обращений, хотя я мог видеть несколько сотен при просмотре http://localhost:4502/tagged.

(1) https://experienceleaguecommunities.adobe.com/t5/adobe-experience-manager/tagged-issue-in-aem-6-4/qaq-p/320994

Надеюсь, этот отсутствие ответа не слишком осуждается.

person James G    schedule 17.06.2020