Hajimeの妄言とTechの部屋

このブログでは、テック系の話や、ドキュメントに関する話などをエンジニアが「こんな感じに使うとええんじゃね?」ということを書き連ねるブログです。

GoogleSpreadSheet (GSS) でGithub Issueを簡単に管理するシートを作ってみた

はじめに

皆さん、お久しぶりです。
私です。

tech-blog.abeja.asia

こちらの記事ご覧になった方、
ありがとうございます。 m(_ _)m

ブログを書き始めて改めて思ったことなのですが、

私のブログ、毎回毎回長すぎじゃね?

というわけで、今回は短く、GoogleSpreadSheet(GSS)で簡単なIssue管理をするListのサンプルとその作り方を簡単に共有します。

ネタじゃないブログ画像

f:id:DTM3110:20191215153953g:plain

やりたいこと

  1. Issueの番号をIDとして表示(Issueへのリンクを付ける)
  2. 依存関係のあるIssueが登録できる
  3. 依存関係のあるIssueが解決されているかどうか分かる

作り方

Issueの番号をIDとして表示(Issueへのリンクを付ける)

これは簡単ですね。

f:id:DTM3110:20191215113338p:plain 基本的にB列をIssueのURLを入れるところにしています。

[A1] 
=ARRAYFORMULA(    ←全部の行に対して適応
    IFS(
        ROW(B:B)=1,"#",    ←1行目は"#"を表示
        ISBLANK(B:B),"",    ←B列が空の場合は何も表示しない
        NOT(ISBLANK(B:B)),    ←上記以外の場合は
            ↓B列の数値部分だけ取り出して、"#<<取り出した数値>>" を生成、リンクを付与
            HYPERLINK(B:B, "#"&REGEXEXTRACT(B:B,"[0-9]+"))
        )
    )
)

おまけ
[B2:B (各行にコピー)]
=IF(
    ISBLANK(B:B),"",     ←B列が空の場合は何も表示しない
    IMPORTXML(B2,"//*[@id='partial-discussion-header']/div[1]/div/h1/span[1]")
    ↑Github IssueからIssueタイトルを取得(B2セルに書く場合)

依存関係のあるIssueが登録できる

これは記録できる列を作るだけなのでパス f:id:DTM3110:20191215120340p:plain

依存関係のあるIssueが解決されているかどうか分かる

1. Issue がCloseになっているかどうかのパイププラインを作成
f:id:DTM3110:20191215120739p:plain

2. 依存Issueの数をカウント

[J2:J (各行にコピー)]
=COUNTA(D2:G2)    ←J2に書く時の場合

3. CloseになっているIssueをカウント

[K2:K (各行にコピー)]
=IF(   ← K2に書く場合
    ISBLANK(D2),0,  ← 空白のときは0
    COUNTIFS(A:A,"="&D2,I:I,"=Close")) + ← 対象のIssueでCloseになっているものをカウント
    ↓以下、繰り返し(THE力技)
    IF(ISBLANK(E2),0,COUNTIFS(A:A,"="&E2,I:I,"=Close")) +
    IF(ISBLANK(F2),0,COUNTIFS(A:A,"="&F2,I:I,"=Close")) +
    IF(ISBLANK(G2),0,COUNTIFS(A:A,"="&G2,I:I,"=Close"))

4. SPARKLINE を使ってわかりやすくする

依存Issueのうち何件終わっているかがわかるようにSPARKLINEのBarChart使います

[H2:H (各行にコピー)]
=IF(    ←H2に書く場合
    ISBLANK(B2),"",
    SPARKLINE(K2,  ←  CloseされたIssueの数
        {"charttype","bar";  ←  BarChart指定
         "max",J2;  ←  依存Issueの数
         "color1","#191970"  ←  BarChartの色
        })
)

完成

GithubIssueList

さいごに

何箇所か回りくどい記述が多いのでもっとスマートな記述をしていきたいこころ