Экспорт › 1000 задач из JIRA

Я пытаюсь экспортировать задачи JIRA через API, и я столкнулся с проблемой Excel из-за того, что JIRA допускает ограничение только в 1000. Я могу выполнить экспорт вручную в CSV и получить более 1000 результатов, и мне было интересно, повезло ли кому-нибудь с большим экспортом JIRA через REST API, и может ли он указать мне правильное направление в этом вопросе.

Предполагаете, что экспорт в CSV, а затем в Excel для отчетности может сработать?

Спасибо!


person user1304228    schedule 25.01.2017    source источник


Ответы (3)


REST API JIRA поддерживает разбиение на страницы, чтобы клиенты API не могли слишком сильно нагружать приложение. Это означает, что вы не можете просто получить все данные о проблеме с помощью одного вызова REST.

Вы можете получить только «страницы» с максимальным количеством 1000 выпусков, используя параметры запроса подкачки startAt и maxResults. См. раздел Разбиение на страницы здесь.

Если вы запускаете автономный сервер JIRA, вы можете настроить максимальное количество результатов, которые возвращает JIRA, но для облачного экземпляра это невозможно. См. эту статью базы знаний для получения дополнительной информации.

person GlennV    schedule 26.01.2017

используя jira-python (согласно вашему тегу)

# search_issues can only return 1000 issues, so if there are more we have to search again, thus startAt=count
issues = []
count = 0
while True:
    tmp_issues = jira_connection.search_issues('', startAt=count, maxResults=count + 999)
    if len(tmp_issues) == 0:
        # Since Python does not offer do-while, we have to break here.
        break
    issues.extend(tmp_issues)
    count += 999
person SgtDroelf    schedule 10.02.2017

Приведенный ниже код будет извлекать результаты по 200 записей за раз, пока все записи не будут экспортированы.

вы можете экспортировать максимум 1000 записей за раз, обновив размер страницы, он будет рекурсивно извлекать 1000 записей, пока все не будет экспортировано

переменная окнаSlider = 200

    const request = require('request')
const fs = require('fs')
const chalk = require('chalk')


var windowSlider = 200

var totlExtractedRecords = 0;
fs.writeFileSync('output.txt', '')

const option = {
    url: 'https://jira.yourdomain.com/rest/api/2/search',
    json: true,
    qs: {
        jql: "project in (xyz)",
        maxResults: 200,
        startAt: 0,
    }
}

const callback = (error, response) => {
    const body = response.body

    console.log(response.body)

    const dataArray = body.issues
    const total = body.total


    totlExtractedRecords = dataArray.length + totlExtractedRecords

    if (totlExtractedRecords > 0) {
        option.qs.startAt = windowSlider + option.qs.startAt
    }

    dataArray.forEach(element => {
        fs.appendFileSync('output.txt', element.key + '\n')
    })

    console.log(chalk.red.inverse('Total extracted data : ' + totlExtractedRecords))
    console.log(chalk.red.inverse('Total data: ' + total))

    if (totlExtractedRecords < total) {
        console.log('Re - Running with start as ' + option.qs.startAt)
        console.log('Re - Running with maxResult as ' + option.qs.maxResults)
        request(option, callback).auth('api-reader', 'APITOKEN', true)
    }
}


request(option, callback).auth('api-reader', 'APITOKEN', true)
person boney dsilva    schedule 05.09.2019