# Airtable

{% hint style="warning" %}
Effective February 1, 2024, Airtable no longer supports connecting via API key. You must connect your Thunkable project to [Airtable via OAuth and use Data Source blocks](https://docs.thunkable.com/v/snap-to-place/data-sources).
{% endhint %}

## Video Tutorial

{% embed url="<https://youtu.be/UUL5CiQppBQ>" %}

{% embed url="<https://youtu.be/2fVRne8drfQ>" %}

## Airtable Overview

Airtable is a service that looks like a spreadsheet but actually acts like a database so it can do database-like things like store attachments i.e. images in your spreadsheets (and not just text) and link records between spreadsheets.

We like Airtable because set-up is relatively a breeze for a spreadsheet

## Getting Started

### Create your [free Airtable](https://airtable.com/) base and account

![](https://689802330-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LAn5scXl2uqUJUOqkJo%2F-LApqldWJ93l59nY1QAb%2F-LApuCNdODoolhHrwioq%2Fspreadsheet-airtable-%E2%9C%95-fig-1.png?alt=media\&token=902114e3-0fb0-4221-bc53-e93bb00df279)

![](https://689802330-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LAn5scXl2uqUJUOqkJo%2F-LApqldWJ93l59nY1QAb%2F-LApuG9iUNVjMUsv_mHX%2Fspreadsheet-airtable-%E2%9C%95-fig-2.png?alt=media\&token=95f91873-4897-4008-b89d-0d74bad24fdc)

### Connect Your Airtable Base with Thunkable

There are four properties that you need to retrieve from Airtable to connect it with Thunkable: `API key`, `Base ID`, `Table Name` and `View Name`

![](https://689802330-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LAn5scXl2uqUJUOqkJo%2F-MX7bf-wickJsMZH-xoQ%2F-MX7fXM70nQidCyQzn1Y%2Fairtable_props.png?alt=media\&token=4ffb90c3-48b5-478f-ada4-a3c0012ea89e)

### API Key

To retrieve the API key, you'll have to navigate to the Account page and generate an API Key

![](https://689802330-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LAn5scXl2uqUJUOqkJo%2F-LApqldWJ93l59nY1QAb%2F-LApuMEIOs2x_Nh4SeCN%2Fspreadsheet-airtable-%E2%9C%95-fig-4.png?alt=media\&token=33c4734e-4a71-4716-8683-5bd9a2e79147)

![](https://689802330-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LAn5scXl2uqUJUOqkJo%2F-LApqldWJ93l59nY1QAb%2F-LApuWsRQQVxYtJ8KRXz%2Fspreadsheet-airtable-%E2%9C%95-fig-5.png?alt=media\&token=85fbd9da-fb58-4728-82be-152c9d126cdd)

### Base ID

To retrieve the Base ID, navigate to the [Airtable API documentation](https://airtable.com/api) page and select your spreadsheet. You will see the Base ID in the 'Introduction' section of this page.

![](https://689802330-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LAn5scXl2uqUJUOqkJo%2F-LApqldWJ93l59nY1QAb%2F-LApubPp3VDtiwHsalNk%2Fspreadsheet-airtable-%E2%9C%95-fig-7.png?alt=media\&token=4c644b99-8388-4332-8067-beeb12f5bb9f)

![](https://689802330-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LAn5scXl2uqUJUOqkJo%2F-LzIT7sFdA_an0WIywTm%2F-LzITjiWH8S4954jK3xU%2FairtableBaseID.jpg?alt=media\&token=aea620ab-0faa-4e4f-8fc3-b35563c3d227)

### Table Name and View Name

The Table Name and View Name can be retrieved by grabbing the fields from your spreadsheet as shown below. Your default Table Name should be "Table 1". Your default View Name should be "Grid View".

![](https://689802330-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LAn5scXl2uqUJUOqkJo%2F-LAn5wecEraNWaG7Ig2g%2F-LAn6DGS4VzswbXshuJ9%2Fspreadsheet-airtable-%E2%9C%95-fig-9.png?generation=1524497185046076\&alt=media)

## Getting, Uploading, Updating, and Deleting data

### Getting Data

#### Getting items for a ListView from an Airtable column

![](https://689802330-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LAn5scXl2uqUJUOqkJo%2F-LAn5wecEraNWaG7Ig2g%2F-LAn6DHpTGU6B2wzisel%2Fspreadsheet-airtable-%E2%9C%95-fig-10.png?generation=1524497184987721\&alt=media)

![](https://689802330-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LAn5scXl2uqUJUOqkJo%2F-LApqldWJ93l59nY1QAb%2F-LApvPo-Q9U9AhEnYhxa%2Fspreadsheet-airtable-%E2%9C%95-fig-11.png?alt=media\&token=308f13fc-7867-4360-8b49-0a2b751ad97c)

![](https://689802330-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LAn5scXl2uqUJUOqkJo%2F-MX7bf-wickJsMZH-xoQ%2F-MX7hTcDFim0gUjXymgb%2Fairtable_get_col.png?alt=media\&token=f35384d4-7867-4820-87ea-46c28cf027c6)

| Event                                              | Description                                                                        |
| -------------------------------------------------- | ---------------------------------------------------------------------------------- |
| Get Cell (`rowNum`, `columnName`)                  | Returns the `value` of a specific cell                                             |
| Get Column (`columnName`, `maxNumRows`)            | Returns a `column` as a list                                                       |
| Get Row (`rowNum`)                                 | Returns a row  `value` as an object                                                |
| Get All Rows                                       | Returns `rows` as an object                                                        |
| Get Selected Rows (`startingRowNumber`, `numRows`) | Returns `rows` as an object based on a specified `startingRowNumber` and `numRows` |

### Uploading and Updating Data

![](https://689802330-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LAn5scXl2uqUJUOqkJo%2F-LApqldWJ93l59nY1QAb%2F-LApvFEgf8iCylABJ-4W%2Fspreadsheet-airtable-%E2%9C%95-fig-14.png?alt=media\&token=c382e4f5-406b-46ce-a15c-5c4c17a51805)

![](https://689802330-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LAn5scXl2uqUJUOqkJo%2F-LApqldWJ93l59nY1QAb%2F-LApvH-P7j3DlZhprttN%2Fspreadsheet-airtable-%E2%9C%95-fig-15.png?alt=media\&token=bd0f7d62-f489-4073-b036-a239cf86a322)

![](https://689802330-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LAn5scXl2uqUJUOqkJo%2F-MX7bf-wickJsMZH-xoQ%2F-MX7iXtnLSNL4ixfKwgU%2Fairtable_create_row.png?alt=media\&token=a9ef21d7-a450-4526-9ae7-ac3df0ee9c8c)

| Event                                    | Description                                                            |
| ---------------------------------------- | ---------------------------------------------------------------------- |
| Create Row (`rowObject`)                 | Uploads a new row of data based on a `rowObject`                       |
| Set Cell (`rowNum`,`columnName`,`value`) | Updates the `value`of a cell in a particular `rowNum` and `columnName` |
| Update Row (`rowObject`)                 | Updates a row based on a `rowObject`                                   |
| Update Row Num (`rowNum`, `rowObject`)   | Updates a row based on a `rowObject` and a `rowNum`                    |
| Replace Row Num (`rowObject`)            | Replaces a row based on a `rowObject`                                  |
| Replace Row (`rowNum`, `rowObject`)      | Replaces a row based on a `rowObject` and a `rowNum`                   |

### Deleting Data

| Event                              | Description                                         |
| ---------------------------------- | --------------------------------------------------- |
| Delete Row Num (`rowNum`)          | Deletes a row based on `rowNum`                     |
| Delete Row (`rowNum`, `rowObject`) | Deletes a row based on a `rowObject` and a `rowNum` |
