Comment on page
Airtable
Posting to Social Media such as Instagram, Twitter, Facebook Pages and Groups, LinkedIn, Google My Business, Reddit, YouTube, TikTok, or Telegram from Airtable.
Running Airtable Automation Scripts requires a paid Airtable plan. Please be sure your Airtable plan includes automations with scripts.
Start by getting your free or paid plan API Key at https://app.ayrshare.com in the API Dashboard section. The key will be used in the script below.
If you are on the Ayrshare business plan and want to post on behalf of your clients, gather all your client's Profile Keys either via the /user or /create-profile endpoints or in the Ayrshare Dashboard.
Be sure you have linked a few social accounts in Ayrshare. Please verify at: https://app.ayrshare.com/social-accounts
Post
as Long TextPlatforms
as Multi Select with types: facebook, instagram, twitter, linkedin, reddit, and telegramImages
as AttachmentProfile Keys
as Single Line TextStatus
as Single Line Text.Schedule Date
as Date with Local Format, Include Time Field, and Time Format 24 Hours

Airtable Table Example
These fields will be used in the Airtable automation script we are about to build.
We need some sample data to test the post. Here is a suggestion:
Post
: Enter - Happy New Year 2021Platforms
: select one or more networks you have linked. Please be sure the name is lowercase.Images
: Attach an image. We like this one you can download and attach: https://img.ayrshare.com/012/gb.jpgProfile Keys
: If you are on the Business Plan and want to post to a client's profile, enter their Profile Key. Otherwise, leave blank.Status
: Enter -pending
. The script only grabs records that are set to pending. Please be sure "pending
is lowercase.Schedule Date
: Leave blank since we'll just test immediate posting right now. Later you can select a future date to schedule the post.
We'll now build the Airtable automation script that reads your data from the table, creates a post, and send it to the social networks via Ayrshare. You will be using the Airtable script editor.
- In the workspace, click on Automation and then +New automation.

- Name the automation.
- Click Choose a Trigger.
- Select When a Record is Created.
- Select the table with the above fields.
- Click Done.
- Start by clicking Add Action.
- Select Run Script. You will be brought into the script editor.
Delete the line:
console.log(`Hello, ${base.name}!`);
And copy and paste into the script editor the following code:
const API_KEY = 'Your API Key'; // Get a free key at app.ayrshare.com
console.log(`Starting Post ${base.name}!`);
const sendPost = async (data) => {
const { post, platforms, imageUrls, profileKeys, scheduleDate, shortenLinks } = data;
const body = Object.assign({},
post && { post },
platforms && { platforms },
profileKeys && { profileKeys: profileKeys.split(",") },
Array.isArray(imageUrls) && imageUrls.length > 0 && { mediaUrls: imageUrls.map(image => image.url) },
scheduleDate && { scheduleDate },
shortenLinks !== undefined && shortenLinks !== null && { shortenLinks }
);
console.log("Posting JSON:", JSON.stringify(body, null, 2));
if (profileKeys) {
body.profileKeys = profileKeys.split(",");
}
const response = await fetch("https://app.ayrshare.com/api/post", {
method: 'POST',
body: JSON.stringify(body),
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${API_KEY}`
}
}).then(res => res.json());
return response;
};
const table = base.getTable("Posts");
const query = await table.selectRecordsAsync();
const filteredRecords = query.records.filter(record => {
const status = record.getCellValue('Status');
return status === "pending";
});
for (let record of filteredRecords) {
const post = record.getCellValue('Post');
const images = record.getCellValue('Images');
const platforms = record.getCellValue('Platforms');
const profileKeys = record.getCellValue('Profile Keys');
const scheduleDate = record.getCellValue('Schedule Date');
const shortenLinks = false;
const response = await sendPost(
{
post,
platforms: platforms.map(x => x.name),
imageUrls: images,
profileKeys,
scheduleDate,
shortenLinks
});
console.log(response);
if (response) {
let status;
if (Array.isArray(response)) {
status = response.map(x => x.status).every(x => x === "success") ? "success" : "error";
} else {
status = response.status;
}
await table.updateRecordAsync(record, {
"Status": status
});
}
}
This code will read from your table and post to Ayrshare. However, you first need to add in your API Key (gathered from above).
Replace
Your API Key
with your real API key.In the script editor, press: >Test
The script will run and output the response from the API call. If everything worked, you'll see a success message returned, the pending field in your records changed to success, and your post on the selected social network.
Once you create a new record in the table, the script will run and process pending records.
If you want more information, see the Airtable docs. They have details on how to use the Airtable script editor.
Here is a great video tutorial from the team at Automate All The Things. This video walks through how to integrate Ayrshare into a live Airtable project.
Last modified 10mo ago