前回まででPythonでGitBucketのIssueをExcel出力できるようになりました。その後、実際に利用してみて少し問題が出てきたので、その内容について紹介したいと思います。
1ページが最大25件で全Issueが取得できない
最初はIssueが少ないので気付かなかったのですが、GitBucketのIssueのAPIは1ページが最大25件でした。そしてGitBucketに全Issueを対象とするstate=allは未実装でしたが、ページサイズを変更するper_pageパラメータも未実装でした。
ということで25件を超える場合は地道にページング(ページを指定して取得)する必要があります。
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)