ニクニクドットミー

カッコいいおっさんを目指すエンジニアの厳かなブログ

BacklogAPIを使って課題を追加するスクリプトをPythonで書いた

えー久々の更新です^^;

業務でBacklogを使っているのですが、どうも課題をたくさん追加したいときにめんどくささがありました。

BacklogはAPIを公開してくれていますので、それを使いガツガツ登録するスクリプトを書いてみました。とても単純なもので、課題名、詳細、予定工数のみを登録します。

登録する方法はCSVで登録内容を書いてそれを読み込んでAPIを叩くといった感じです。

使ったAPIはbacklog.createIssueとbacklog.getUserのみです。

# -*- coding: utf-8 -*-o
import xmlrpclib
import sys
import csv

USER_ID = ""
PASS = ""
SPACE_ID = ""
PROJECT_ID = ""

class PyBacklog(object):
    
    def __init__(self):
        server = xmlrpclib.ServerProxy('https://'+USER_ID+':'+PASS+'@'+SPACE_ID+'/XML-RPC')
        user = server.backlog.getUser(USER_ID)
        self.s = server
        self.projectId = PROJECT_ID
        self.user_id = user["id"]
        
    def createIssue(self,param):
        '''
        課題の追加
        '''
        if self.s.backlog.createIssue(param):
            return True

        return False

    def getUser(self,user_id):
        '''
        ユーザの取得
        '''
        user = self.s.backlog.getUser(user_id)
        if user:
            return user

        return False
    
if __name__ == '__main__':
    issue_dic = {
        "projectId":'',      #プロジェクトID
        'summary':'',        #課題名
        'description':'',    #詳細
        'estimated_hours':'',    #予定工数
        'assignerId':''          #担当者
        }

    issue_list = []

    bl= PyBacklog()

    f = open(sys.argv[1],'rU')
    try:
        reader = csv.reader(f)
        for row in reader:
            issue_dic["projectId"] = bl.projectId
            issue_dic["summary"] = row[0]
            issue_dic["description"] = row[1]
            issue_dic["estimated_hours"] = row[2]
            issue_dic["assignerId"] = bl.user_id

            print '=======Preview========'
            print "課題:",issue_dic["summary"]
            print "詳細:",issue_dic["description"]
            print "予定工数:",issue_dic["estimated_hours"]
            print '====================='

            issue_list.append(issue_dic)

        print "登録する場合は'commit'を入力してください"
        ans = raw_input()
        if ans == 'commit':
            for val in issue_list:
                bl.createIssue(val)

    except Exception as e:
        print 'type' + str(type(e))
        print 'args' + str(e.args)
        print 'message' + e.message
        print 'e' + str(e)

    f.close()
    print '終了'

USER_ID、PASS、SPACE_ID、PROJECT_IDはBacklog登録時に記載されていると思います(たぶん)

とりあえずGithubに。 https://github.com/maaaato/pybacklog

BacklogはXML-RPCというのでAPIを公開しているようです。XMLで結果を返却するみたい。APIJSONのイメージが強かったのですが、こういうのもあるんですねー