初めてのPython。せっかくだからBackLogAPIもついでにいじってみた
pybacklog https://github.com/netmarkjp/pybacklog
と
xlwings https://www.xlwings.org/
使ってます。
backlogfunc.py
from pybacklog import BacklogClient from xlwings import * SPACE_NAME = '' API_KEY = '' PROJECT_KEY = '' # バージョン/ マイルストーン情報登録 def setVersion(VersionName,StartDate,ReleaseDate): client = BacklogClient(SPACE_NAME, API_KEY) response = client.create_version(PROJECT_KEY,VersionName,StartDate,ReleaseDate) return response["id"] # 課題情報取得 def getTemplateIssue(IssueKey): client = BacklogClient(SPACE_NAME, API_KEY) # テンプレート課題の情報を取得 TemplateIssue = client.issue(IssueKey) tmp = [TemplateIssue["category"][0]["id"] , TemplateIssue["summary"],TemplateIssue["description"]] return tmp # 課題登録 def setIssue(strSummary,strStartDate,strDueDate,strDescription,strCategoryID,strVersionID,strParentIssueKey=''): client = BacklogClient(SPACE_NAME, API_KEY) #ProjectID PID = client.get_project_id(PROJECT_KEY) #IssueTypeID を取得 IssueTypeList = client.project_issue_types(PROJECT_KEY) for IssueType in IssueTypeList: if IssueType["name"] == "タスク" : IssueTypeID = IssueType["id"] break #課題を登録 ExtraRequestParam = { "description":strDescription, "startDate" :strStartDate, "dueDate":strDueDate, "categoryId[]":strCategoryID, "versionId[]":strVersionID } # 親課題に紐づける場合 if strParentIssueKey !='': ExtraRequestParam["parentIssueId"] = str(client.get_issue_id(strParentIssueKey)) response = client.create_issue(str(PID),strSummary,str(IssueTypeID),"3",ExtraRequestParam) # 課題IDを返す return response["id"] # Excelから課題情報取得 def xl_getIssue(): wb = Book.caller() ws = wb.sheets('WORK') ret = getTemplateIssue(ws.range('A1').value) ws.range('A2').value = ret[0] ws.range('A3').value = ret[1] ws.range('A4').value = ret[2] # Excelからバージョン情報登録 def xl_setVersion(): wb = Book.caller() ws = wb.sheets('WORK') ws.range('A4').value = setVersion(ws.range('A1').value,ws.range('A2').value,ws.range('A3').value) # Excelから親課題を登録 def xl_setIssue_Parent(): wb = Book.caller() ws = wb.sheets('WORK') #debug ws.range('A8').value = setIssue(\ ws.range('A1').value, ws.range('A2').value, ws.range('A3').value, ws.range('A4').value, ws.range('A5').value, ws.range('A6').value) # Excelから子課題を登録 def xl_setIssue_Child(): wb = Book.caller() ws = wb.sheets('WORK') #debug ws.range('A8').value = setIssue(\ ws.range('A1').value, ws.range('A2').value, ws.range('A3').value, ws.range('A4').value, ws.range('A5').value, ws.range('A6').value, ws.range('A7').value)
Excel側はこんな感じ
' 課題情報取得 Public Sub py_getIssue() Dim wb As Workbook: Set wb = ThisWorkbook Dim wsCalc As Worksheet: Set wsCalc = wb.Worksheets("WORK") wsCalc.Cells.Clear wsCalc.Range("A:A").NumberFormatLocal = "@" wsCalc.Range("A1").Value = "" '課題Key RunPython ("import backlogfunc; backlogfunc.xl_getIssue();") End Sub ' バージョン情報登録 Public Sub py_setVersion() Dim wb As Workbook: Set wb = ThisWorkbook Dim wsCalc As Worksheet: Set wsCalc = wb.Worksheets("WORK") wsCalc.Cells.Clear wsCalc.Range("A:A").NumberFormatLocal = "@" wsCalc.Range("A1").Value = "EXCELから登録テスト" wsCalc.Range("A2").Value = Format(Now(), "YYYY-MM-DD") wsCalc.Range("A3").Value = Format(Now() + 30, "YYYY-MM-DD") RunPython ("import backlogfunc; backlogfunc.xl_setVersion();") End Sub ' 課題登録 Public Sub py_setIssue() Dim wb As Workbook: Set wb = ThisWorkbook Dim wsCalc As Worksheet: Set wsCalc = wb.Worksheets("WORK") '1:strSummary '2:strStartDate '3:strDueDate '4:strDescription '5:strCategoryID '6:strVersionID '7:strParentIssueKey '8:IssueID(返り値) '試作品につき、課題件名 カテゴリID 詳細はほかの課題から取得 実際は引数に Call py_getIssue Dim sSummary As String: sSummary = wsCalc.Range("A3").Value Dim sCategoryId As String: sCategoryId = wsCalc.Range("A2").Value Dim sDescription As String: sDescription = wsCalc.Range("A4").Value With wsCalc .Cells.Clear .Range("A:A").NumberFormatLocal = "@" .Range("A1").Value = sSummary & "_Excelから登録" .Range("A2").Value = Format(Date, "YYYY-MM-DD") .Range("A3").Value = Format(Date + 30, "YYYY-MM-DD") .Range("A4").Value = sDescription .Range("A5").Value = sCategoryId .Range("A6").Value = "" 'バージョンID .Range("A7").Value = "" '親課題キー(未設定の場合は親課題として登録/設定がある場合は子課題として登録) End With If wsCalc.Range("A7").Value = "" Then RunPython ("import backlogfunc; backlogfunc.xl_setIssue_Parent();") Else RunPython ("import backlogfunc; backlogfunc.xl_setIssue_Child();") End If End Sub