Skip to content

Instantly share code, notes, and snippets.

@rileyrichter
Created January 30, 2023 19:50
Show Gist options
  • Save rileyrichter/81005a8dbf14ece4e5efc1a76b7c420a to your computer and use it in GitHub Desktop.
Save rileyrichter/81005a8dbf14ece4e5efc1a76b7c420a to your computer and use it in GitHub Desktop.
Airtable to Webflow
const config = input.config({
title: "Script Settings",
items: [
input.config.text("webflowAPI", {
label: "Webflow API Key",
}),
input.config.text("collectionID", {
label: "Collection ID",
}),
],
});
let table = base.getTable("All Team");
let query = await table.selectRecordsAsync();
let records = query.records;
for (let record of records) {
let body = {
fields: {
_archived: false,
_draft: false,
"e-mail": record.getCellValue("Email"),
name: record.getCellValue("Name"),
"alt-text": record.getCellValue("Alt Text"),
title: record.getCellValue("Title").name,
photo: record.getCellValue("Image"),
},
};
let updateBody = {
fields: {
name: record.getCellValue("Name"),
slug: record.getCellValue("Slug"),
_archived: false,
_draft: false,
"e-mail": record.getCellValue("Email"),
"alt-text": record.getCellValue("Alt Text"),
title: record.getCellValue("Title").name,
photo: record.getCellValue("Image"),
},
};
if (record.getCellValue("Status").name === "New") {
let response = await remoteFetchAsync(
`https://api.webflow.com/collections/${config.collectionID}/items?live=true`,
{
method: "POST",
body: JSON.stringify(body),
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${config.webflowAPI}`,
"accept-version": "1.0.0",
},
}
);
let webflowResponse = await response.json();
console.log(webflowResponse);
console.log(response);
table.updateRecordAsync(record, {
"Item ID": webflowResponse._id,
"Slug": webflowResponse.slug,
"Status": {name: "Live"}
});
} else if (record.getCellValue("Status").name === "Update") {
let webflowID = record.getCellValue("Item ID");
let response = await remoteFetchAsync(
`https://api.webflow.com/collections/${config.collectionID}/items/${webflowID}?live=true`,
{
method: "PUT",
body: JSON.stringify(updateBody),
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${config.webflowAPI}`,
"accept-version": "1.0.0",
},
}
);
let webflowResponse = await response.json();
console.log(webflowResponse);
console.log(response);
table.updateRecordAsync(record, {
"Status": {name: "Live"}
});
} else if (record.getCellValue("Status").name === "Remove") {
let webflowID = record.getCellValue("Item ID");
let response = await remoteFetchAsync(
`https://api.webflow.com/collections/${config.collectionID}/items/${webflowID}?live=true`,
{
method: "DELETE",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${config.webflowAPI}`,
"accept-version": "1.0.0",
},
}
);
let webflowResponse = await response.json();
console.log(webflowResponse);
console.log(response);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment