Airtable docs page

This commit is contained in:
Matt Aitken
2023-09-07 09:35:22 +01:00
parent 7ac7d83c3e
commit c0edeca5cc
2 changed files with 142 additions and 0 deletions
+141
View File
@@ -0,0 +1,141 @@
---
title: Airtable
---
Use the Airtable integration to create, read, update, and delete records in your Airtable bases.
Coming soon: subscribing to changes in your Airtable bases using triggers.
<Snippet file="integration-getting-started.mdx" />
## Installation
To get started with the Airtable integration on Trigger.dev, you need to install the `@trigger.dev/airtable` package.
You can do this using npm, pnpm, or yarn:
<CodeGroup>
```bash npm
npm install @trigger.dev/airtable@latest
```
```bash pnpm
pnpm add @trigger.dev/airtable@latest
```
```bash yarn
yarn add @trigger.dev/airtable@latest
```
</CodeGroup>
## Authentication
To use the Airtable API with Trigger.dev, you can either use OAuth or a Personal Access Token.
### OAuth
```ts
import { Airtable } from "@trigger.dev/airtable";
//this will use OAuth
const airtable = new Airtable({
id: "airtable",
});
```
### Personal Access Token
You can create an Airtable Personal Access Token [here on their developer site](https://airtable.com/create/tokens).
```ts
import { Airtable } from "@trigger.dev/airtable";
//this will use the passed in token (defined in your environment variables)
const airtable = new Airtable({
id: "airtable",
token: process.env["AIRTABLE_TOKEN"],
});
```
## Usage
Include the Airtable integration in your Trigger.dev job.
You can optionally add the types for your Table this gives you nice type inference and errors when writing your code.
```ts
//this is the type definition for my Table
type LaunchGoalsAndOkRs = {
"Launch goals"?: string;
DRI?: Collaborator;
Team?: string;
Status?: "On track" | "In progress" | "At risk";
"Key results"?: Array<string>;
"Features (from 💻 Features table)"?: Array<string>;
"Status (from 💻 Features)": Array<
"Live" | "Complete" | "In progress" | "Planning" | "In reviews"
>;
};
client.defineJob({
id: "airtable-example-1",
name: "Airtable Example 1: getRecords",
version: "0.1.0",
trigger: eventTrigger({
name: "airtable.example",
}),
integrations: {
//make sure to add the integration here
airtable,
},
run: async (payload, io, ctx) => {
//adding the type to table<YourTableType>("<your table name>") gives you nice type inference and errors
//you can leave it out as well table("<your table name>")
const table = io.airtable.base("<your base id>").table<LaunchGoalsAndOkRs>("<your table name>");
//gets multiple records from the table. Here we only get the Status fields (columns)
const records = await table.getRecords("muliple records", { fields: ["Status"] });
await io.logger.log(records[0].fields.Status ?? "no status");
//Get a single record
const aRecord = await table.getRecord("single", records[0].id);
//create a new record
const newRecords = await table.createRecords("create records", [
{
fields: { "Launch goals": "Created from Trigger.dev", Status: "In progress" },
},
]);
//update the record we just created
const updatedRecords = await table.updateRecords(
"update records",
newRecords.map((record) => ({
id: record.id,
fields: { Status: "At risk" },
}))
);
//wait 5 seconds
await io.wait("5 secs", 5);
//delete the record we just created + updated
const deletedRecords = await table.deleteRecords(
"delete records",
updatedRecords.map((record) => record.id)
);
},
});
```
## Tasks
| Function Name | Description |
| -------------------------- | --------------------------------------------------------------- |
| `base.table.getRecords` | Gets multiple records for a table. You can filter |
| `base.table.getRecord` | Gets a single record (using the id) for a table. |
| `base.table.createRecords` | Create one or more records in a table. |
| `base.table.updateRecords` | Update one or more records in a table. |
| `base.table.deleteRecords` | Delete one or more records in a table (using ids). |
| `runTask` | Do anything that's possible with the official Airtable Node SDK |
+1
View File
@@ -188,6 +188,7 @@
{
"group": "Integrations",
"pages": [
"integrations/apis/airtable",
{
"group": "GitHub",
"pages": [