Get-Tasks/Get-KBFTask.ps1
function Get-KBFTask { <# .SYNOPSIS Get a task by its ID #> [CmdletBinding()] param ( [Parameter(Mandatory=$true)] [string]$ApiToken, [Parameter(Mandatory=$true, ParameterSetName="SingleTask")] [string]$TaskId, [Parameter(ParameterSetName="MultiTask")] [string]$columnId = "", [string]$columnName = "", [string]$columnIndex = "", [string]$startTaskId = "", [string]$startGroupingDate = "", [string]$limit = "", [string]$order = "", [switch]$Flat = $false ) Process { # The command is used to request only one task if ( $PSCmdlet.ParameterSetName -eq "SingleTask" ) { Invoke-KBFApi -ApiToken $ApiToken -Method "Get" -Command "tasks/$TaskId" return } if ( $PSCmdlet.ParameterSetName -eq "MultiTask" ) { $urlParameters = @{ columnId = $columnId columnName = $columnName columnIndex = $columnIndex startTaskId = $startTaskId startGroupingDate = $startGroupingDate limit = $limit order = $order } $tasksInColumns = Invoke-KBFApi -ApiToken $ApiToken -Method "Get" -Command "tasks" -Parameters $urlParameters <# This will change the structure from column.tasks to tasks that contain the column name & id. This flat structure is better suited for analysis and filtering. #> if ($Flat -eq $true) { $result = @() For ($i = 0; $i -lt $tasksInColumns.Count; $i++) { $columnName = $tasksInColumns[$i].columnName For ($j = 0; $j -lt $tasksInColumns[$i].tasks.Count; $j++) { $temp = $tasksInColumns[$i].tasks[$j] $temp | Add-Member NoteProperty -Name "columnName" -Value $columnName -Force $result +=,$temp } } return @( $result ) } return $tasksInColumns } } } |