課題を一括で登録する方法として、GASを使った方法を記事にしましたが、便利な反面、間違えたときの影響はデカい・・・・
1個ずつ課題を削除・・・・・なんてやってられるか!!
いや、10個ぐらいだったら頑張りますよ?ですが、それが20も30もあったりすると・・・・ねぇ?
ということで、今日は課題を一括で削除する手順を書こうと思います。
その前に
課題を一括で削除する方法としては以下の2つの方法があると思います。
消したい課題をすべて完了にする
一つ目の方法は、"課題をすべて完了にする"です。
厳密には消えていないですが、画面上からは消えます。
UIを使って一括で完了ができるので、その方法が後述する方法よりは安全といえば安全です。
http://www.backlog.jp/help/usersguide/update-issues-at-once/userguide1672.htmlwww.backlog.jp
ただし、消えているわけではないのでフィルターで完了済みとか選ぶと表示されてなにがなにだかわからなくなる場合もあるかと思います。
Backlog APIを使って削除する
※ 課題を削除するときは自己責任でお願いします。重要な課題が消えてしまったと言われてもなにもできないので💦あくまで手順的なご提案ということで。
Backlogでは課題を削除するAPIが準備されています。
課題の削除 | Backlog Developer API | Nulab
そして課題の一覧を取得するAPIも準備されています。
課題一覧の取得 | Backlog Developer API | Nulab
それらを組み合わせて、全削除を試みます。
backlog_kitでの課題削除はdelete_issue
メソッド、課題取得はget_issues
を使います。
流れ的には、課題の一覧取得→取得した課題キーで削除をループさせる感じです。
サンプルコードはこちら。
require 'backlog_kit' def deleteProject(key) @client.delete_project(key) end def getIssueList() params = { # プロジェクトIDを配列に入れて指定します。以下で言えば5555555がプロジェクトID。 projectId: [5555555], # sort: "childIssue", # parentChild: 2 } issue_list = @client.get_issues(params) return issue_list.body end def deleteIssue(issue_key) @client.delete_issue(issue_key) end # /////////// # main # /////////// @client = BacklogKit::Client.new( space_id: "sample-space", api_key: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" ) issues = getIssueList() issues.each do |issue| p issue.issueKey deleteIssue(issue.issueKey) end
課題が5個ぐらいしかない極小プロジェクトでやってみたら動きました。大量の課題があるプロジェクトでは試していないので、その辺は注意してください。
注意しなくてはいけない点が一つ。
課題を削除する場合、親課題は子課題が存在すると削除できません。
なので、子課題をすべて削除→親課題を削除という順番で消していく必要があります。
上記コードではその辺やっていません。最初はsort: "childIssue"
ってのを指定していたのですがどうにも思い通りにならず、sort
オプションを外したら子課題→親課題の順番に並んだのでそのまま使っています。コメントアウトしているのはそのためです。
厳密にやるのであれば子課題だけ抽出→削除→親課題抽出→削除のほうが安全なんだろうな。
次は
BacklogをだんだんCLIで操作する術が増えてきました。
個人的には喜ばしいことです。次回以降はこまごまとしたことをまとめていこうと思います。
このブログでも勧めている「コンサル一年目が学ぶこと」
リアルでも勧めだしました。事実があって、解釈があって、アクションがある。早く読み進めなくては。