Golang Airtable API

GoDoc Go codecov Go Report Mentioned in Awesome Go

A simple #golang package to access the Airtable API.

Table of contents

Installation

The Golang Airtable API has been tested compatible with Go 1.13 on up.

go get github.com/mehanizm/airtable

Basic usage

Initialize client

You should get your_api_token in the airtable account page

client := airtable.NewClient("your_api_token")

Get table

To get the your_database_ID you should go to main API page and select the database.

table := client.GetTable("your_database_ID", "your_table_name")

List records

To get records from the table you can use something like this

records, err := table.GetRecords().
    FromView("view_1").
    WithFilterFormula("AND({Field1}='value_1',NOT({Field2}='value_2'))").
    WithSort(sortQuery1, sortQuery2).
    ReturnFields("Field1", "Field2").
    InStringFormat("Europe/Moscow", "ru").
    Do()
if err != nil {
    // Handle error
}

Add records

recordsToSend := &airtable.Records{
    Records: []*airtable.Record{
        {
            Fields: map[string]interface{
                "Field1": "value1",
                "Field2": true,
            },
        },
    },
}
receivedRecords, err := table.AddRecords(recordsToSend)
if err != nil {
    // Handle error
}

Get record by ID

record, err := table.GetRecord("recordID")
if err != nil {
    // Handle error
}

Update records

To partial update one record

res, err := record.UpdateRecordPartial(map[string]interface{}{"Field_2": false})
if err != nil {
    // Handle error
}

To full update records

toUpdateRecords := &airtable.Records{
    Records: []*airtable.Record{
        {
            Fields: map[string]interface{
                "Field1": "value1",
                "Field2": true,
            },
        },
        {
            Fields: map[string]interface{
                "Field1": "value1",
                "Field2": true,
            },
        },
    },
}
updatedRecords, err := table.UpdateRecords(toUpdateRecords)
if err != nil {
    // Handle error
}

Delete record

res, err := record.DeleteRecord()
if err != nil {
    // Handle error
}

Bulk delete records

To delete up to 10 records

records, err := table.DeleteRecords([]string{"recordID1", "recordsID2"})
if err != nil {
    // Handle error
}

Special thanks

Inspired by Go Trello API

Airtable

Simple golang airtable API wrapper

Airtable Info

⭐ Stars 13
🔗 Source Code github.com
🕒 Last Update 10 months ago
🕒 Created a year ago
🐞 Open Issues 1
➗ Star-Issue Ratio 13
😎 Author mehanizm