0
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

PythonでGitBucketのIssueをExcel出力する(その後)

前回まででPythonでGitBucketのIssueをExcel出力できるようになりました。その後、実際に利用してみて少し問題が出てきたので、その内容について紹介したいと思います。

1ページが最大25件で全Issueが取得できない

最初はIssueが少ないので気付かなかったのですが、GitBucketのIssueのAPIは1ページが最大25件でした。そしてGitBucketに全Issueを対象とするstate=allは未実装でしたが、ページサイズを変更するper_pageパラメータも未実装でした。
ということで25件を超える場合は地道にページング(ページを指定して取得)する必要があります。

ページを指定してIssueを取得するAPIのURL
set ISSUES_URL=http://localhost:8888/api/v3/repos/demouser/testrepo/issues?state=closed^&page=2

あと&はbat(Windowsコマンドプロンプト)で引数を意味するので、^でエスケープする必要があります。環境変数からURLを取得する方法は再検討した方がよさそうです。

ヘッダー行に色を着けたい

せっかくExcelにしたので見た目も分かりやすくしたくなりました。
一覧のヘッダー行に色を着ける方法です。
ここでは背景色が青(#538DD5)で文字色が白としました。

背景色を設定する方法(セルフォーマットの設定)
# ★ポイント1 : セル書式の設定
headerFormat = workbook.add_format()
headerFormat.set_pattern(1)
headerFormat.set_bg_color('#538DD5')
headerFormat.set_font_color('white')

# ★ポイント2 : 作成したセル書式を設定
worksheet.write(rowNum, 0, unicode('issue番号', 'utf-8'), headerFormat)

1セルに設定する文字が255文字を超過してエラーになった

Issueの本文にたくさん書き込んでいたものは、Excelの1セル255文字制限に引っ掛かってしまいました。
この場合エラーメッセージが出力されますが、上限一杯の文字まではセルに反映されます。

この問題はExcelと同じくセル結合することで解決できます。
xlsxwriterでセル結合するにはmerge_range()を利用します。

セルを結合する方法
# ★ポイント3 : 同じ行の6列と7列を結合
worksheet.merge_range(rowNum, 6, rowNum, 7, unicode('本文', 'utf-8'), headerFormat)

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?