Public/Find-AirTableRecord.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
function Find-AirTableRecord
{
    param
    (
        [Parameter(Mandatory)]
        [string]$ApiKey,

        [Parameter(Mandatory)]
        [string]$BaseName,

        [Parameter(Mandatory, Position = 0)]
        [string]$TableName,

        [Parameter()]
        [ValidateNotNull()]
        [string[]]$Fields = @(),

        [Parameter()]
        [string]$Filter,

        [ValidateRange(1, [int]::MaxValue)]
        [int]$MaxRecords
    )

    $Filter = [System.Web.HttpUtility]::UrlEncode($Filter)

    $PathElements = @(
        if ($Fields) { "fields=$($Fields -join ',')" }
        if ($Filter) { "filterByFormula=$Filter" }
        if ($MaxRecords) { "maxRecords=$MaxRecords" }
    )

    Invoke-AirTableApi `
        -ApiKey $ApiKey `
        -BaseName $BaseName `
        -TableName $TableName `
        -Method Get `
        -QueryString ($PathElements -join '&') |
        Select-Object -ExpandProperty Records |
        ConvertFrom-AirTableRecord -TableName $TableName
}