Need development and API help? Ask your questions here!
Recently active
Hi, I'm using Create Record API, my requirement is sending a image to a field in table. But the API requires to send an image URL instead. Would anyone know if there is a hosting service that can return the image URL while ensure the image uploaded is not being public? Or would Airtable team have plan to provide such a service? Thanks!
Issue: I am trying to have a "Number" field to get updated with values starting from 1, 2, 3, etc based on the position of the task in the chain. I am seeing the numbers are coming off: like 3,3,3,3, for a lot of tasks in the same chain despite there being a hierarchy. And yes there are no circular references for that chain or any branching etc.Script Description: The script aims to update records in the "Tasks" table of my Airtable base. Here's what it does:It retrieves records from the "Tasks" table, selecting specific fields: "Predecessors", "Tasks", and "Next task".It filters the retrieved records to find tasks that don't have any successor tasks (i.e., "Next task" is empty).For each of these final tasks, it traverses the chain of predecessors to update a field called "Milestone Name" with the name of the final task.It performs updates in batches of 50 records to avoid hitting Airtable API rate limits.Code: const table = base.getTable('Tasks'); const query = await table.
Hello Airtable Community,I'm reaching out for some assistance with a scripting block in Airtable. My objective is to identify duplicate records in a "PNS - Content samples" view of the "PNS" table, based on a unique "Link" field, and merge them. The script should combine the records such that for each link, we keep a single record with data aggregated from the duplicates. The requirement is to preserve non-empty field values from the first record and fill in any empty fields with data from the second record, ensuring that no data is lost from the combined records.The approach I've taken involves:Grouping records by the "Link" field.Iterating through the groups to aggregate field values.Updating the first record with the combined data.Deleting the remaining duplicate records.Here's the code: async function mergeDuplicates() { console.log("Starting the duplicate merging process..."); const table = await base.getTable("PNS"); const view = await table.getView("PNS - Conten
HiI'm looking to embed the an airtable form into my site but I noticed that unless we set the COEP header to be unsafe-none rather than credentialless. Are we not able to set the iframe as credentialless for added security?Thanks!
I had been importing an Airtable in to Power BI, only needing it every few months, but now am unable to refresh. It appears that API_KEYS have been depreciated as of February and I'm unable to find a resource for how to reestablish the connection.Does anyone have reliable M code I can drop in the advanced editor to get my tables back?I appreciate the assistance. For what it is worth, this is the entirety of the existing M that I had been using. It now says that it can't authenticate with current credentials. I have set it to anonymous, but to no avail. let Pagination = List.Skip(List.Generate( () => [Last_Key = "init", Counter=0], each [Last_Key] <> null, each [ Last_Key = try if [Counter]<1 then "" else [WebCall][Value][offset] otherwise null, WebCall = try if [Counter]<1 then Json.Document(Web.Contents("https://api.airtable.com", [RelativePath="v0/"&BASE_ID&"/"&TABLE_ID&"?api_key="&API_KEY&""])) else
const table1 = base.getTable("Table 1") const view = table1.getView("Grid view"); const record_view = await table1.selectRecordsAsync({fields: ["Name"]}) const record_filtered = record_view.records.filter(record => record.name === "Test 1") I'm just trying to understand how scripts work on airtable. i'm not a expert on JS so it can have some errors, but i think i already did the filter in a right way but i can't console.log anything about the "record_filtered"And im trying to update the record_filtered, but i can't get the recordIdlet table = base.getTable("Table 1"); //let record = await input.recordAsync("Converting record", table) const record_view = await table.selectRecordsAsync({fields: ["Name"]}) const record_filtered = record_view.records.filter(record => record.name === "Test 1") let test1 = "gui123" let recordId = record_filtered.id; await table.updateRecordAsync(recordId, { "Name" : test1, })
Trying to debug code written by someone else. It seems that the following code doesnt return more than 100 records even though fetchnextpage is set.This seems to have stopped working recently and I'm not sure what has changed. return new Promise((resolve, reject) => { base(tableName).select({ maxRecords: 100, view: viewName }).eachPage(function page(records, fetchNextPage) { records.forEach(function(record) { data.push({ ----fields---- }); }); } fetchNextPage(); }, function done(err) { if (err) { console.error(err); return; } resolve(data); }); })
I'm interested in creating a share link for a View automatically in response to user requests through our backend server.Could anyone tell me if it's feasible to generate such a link via an API or through any other methods?Thank you!Appendix:The image shows the way to generate via the Airtable web console.
Hi everyoneI'm trying to 'visualise' the database I've built in some form of Sitemap Hierarchy with connected/relational fields and the ability to filter those connected/relational fields and it doesn't look like Airtable has this functionality native, closest I've found is the Org Chart extension, but doesn't seem flexible enough.It's likely that what I'm asking is likely impossible but I don't know if there's a better way to setup the database tabs to make the hierarchy work.For context, we're looking to visually map via a semi-automated export function the hierarchy or an Organisation that has Departments, Sub-Departments, Teams and People within it that are all separate tabs.Any advice or examples of how you've managed to make a Org Chart or Sitemap Visualisation work.TIA Charlie
Hi,I developed custom extension in airtable..In this I am implemented Oauth manually and its almost done.The blocker i am facing is after getting access token i dont know the redirect url for that extensionhow can i get the redirect url for the extension that i am building
Hello there,Everytime an event occurs, a tool add a new record in Airtable. Once added, it's automatically sorted by Creating Time, so the newest one is always on top.What i need it that if the total rows is 500 and a new record is added on the top, Airtable automatically deletes the number 501 (the oldest one).If not possible another viable solution would be that the 10th of each month for example, or 2 times a week, Airtable automatically deletes columns from 500 to the end.Hope you can help, thank you very much!
HiI'm trying to make an AIRTABLE API callTo update a recordThe field I want to update is a field of type numberAnd when I try to enter a number I get this messageField "Hours used" cannot accept the provided valueOf course I enter only a number without signsThis is the body of the API call I'm making{"fields": {"Hours used": "35"}}I will rejoice in repentanceThank you
Hello! I got unexpected behavior in airtable web api.I use "Update multiple records" (https://airtable.com/developers/web/api/update-multiple-records) method for update or create records if not exists in my table. I use it with "upsert" parameter with two key fields like ["Handle", "Image Position"]. First one is text, second one is number.Expected behavior: update records if them exists, otherwise create new. Got behavior: always create new records.Note that updating with one key field works as expected.In general we need method to import records to airtable from our internal database and keep them up to date.
I’ve made a GPT assistant for e-com clients that can recommend products. This tool is made on make.com. The scenario is made with webhooks, open ai module (convert user query to airtable formula), search airtable records, open ai module (encode formula to URL) and airtable make an api call module.Everthing works except the api module. I believe it's the URL because I have given my PAT every scope, connected it to the base, and have correctly connected it in make.com. The api module is a get request and I have used the list records url from the api documentation. I have tried these two forms of URL encoding and still no luck:v0/appBUitd0yNopP1w7/Imported%20table?maxRecords=3&view=Grid%20view&filterByFormula=AND%28%7Bcolour%7D%20%3D%20%27Blue%27%2C%20%7BCategory%7D%20%3D%20%27Sling%20Bag%27%29https://api.airtable.com/v0/appBUitd0yNopP1w7/Imported%2520table%3F?filterByFormula=AND(%7Bcolour%7D+%3D+'Blue'%2C+%7BCategory%7D+%3D+'Sling+Bag')Any help would be greatly apprecia
I have linked voiceflow via API with airtable, this works. I would like to filter via FilterByFormula in the parameters, if I then filter on just the order number it works fine. If I filter on just the email address it works fine, but if I filter on both I get the error INVALID_REQUEST_UNKNOWN, with the message Invalid request: parameter validation failed. Check your request data. How can I solve this?
Hi! We experience an urgent issue while airtable status page says everything functions normally. Support seem to be sleeping, so I ask here if anyone know any kind of solution that we can do. What we experience:- No automations are running- Automations page doesn't respond saying "An error has occurred" - Different error codes every time. Here is one. Error: pgl8szkfLTtXp41CN- API doesn't respond- Table views doesn't loadAnything we can do, but to wait for support?
Hi,I want to search for 1 item in a table which contains multiple items in a cell - apple, banana, grape.The filterByFormula with the = only works if there is only 1 item in the cell. If they are multiple items, I get an error.I tried using "contains" and "like" but they don't work. What should I use?ThanksSteve
Is it possible to pull data from Harvest into Airtable? Specifically I am looking to transfer costs (Time and Expenses) in Harvest into two fields in my Airtable base. I do not see this functionality natively available with Zapier or Make, but am curious if anyone has found a solution. Thanks in advance!
This forum has been incredibly helpful, so I thought I'd keep asking questions. Next up is why filterByFormula doesn't seem to work in my node app. However, the formula works in the Airtable UI and when used in an HTTP request via the API. const base = new Airtable({ apiKey: 'xxxxxx' }).base('yyyyy'); const matchingRecords = []; await base('tblbfJeKQo52GnLWD') .select({ filterByFormula: '{project_id}="3986271"' }).eachPage( (pageRecords, fetchNextPage) => { pageRecords.forEach(record => { console.log(record); matchingRecords.push(record); }); fetchNextPage(); }, err => { if (err) { console.error(err); return; } } ); console.log(matchingRecords); The above returns `matchingRecords` as an empty array. However, https://api.airtable.com/v0/app49uIs2F0Ca2ES3/tblbfJeKQo52GnLWD?filterByFormula={project_id}='398627
I'm seeing very slow requests when fetching a single record from a table with 4 records.Very slow as in more than a minute.What am I doing wrong?
Suppose I have the graphs stated below.Chart #1: qty. returns versus weeksChart #2: qty. returns versus items during week 12Chart #3: qty. returns versus items during week 11Chart #4: qty. returns versus items during week 10Chart #5: qty. returns versus items during week 9etc.I want a dashboard where, while I'm on chart #1, and I click a bar over week 12, then chart #2 appears next to it showing the returns per items during week 12;if I click a bar over week 11, then chart #3 appears next to it. That way I only have two charts at one time, instead of thirteen on a dashboard.If possible, I would like to keep going with a third chart. When chart #2 appears, if I click an item, e.g. blue towel, then a third chart shows qty. of blue-towel returns versus weeks; if I click another item on chart #2, e.g. water bottle, then the third chart shows qty. of water-bottle returns versus weeks.
Does anybody else notice changed behavior when uploading attachments with the API?AT used to fill the file name property by default, but since last week I'm not getting any value when reading the attachment field. Older attachments have the "filename" as usual, newer uploads have no value in the JSON.Can anyone confirm please?Thanks in advance!
Just to be clear. When I add a lookup field to a table, that field is not accessible direct through `getCellValue`, correct? I still have to get the id of the corresponding Linked Record field, and do another lookup to get the value of the field that matches my Lookup field. Correct? Just want to make sure I'm not crazy, because it sure seems like extra work for what could be available directly in the table itself.
Hello AirTable team,Hope things are good. Our team recently decided to try using AirTable to automate a simple referral management process. The idea is super simple:We have an AirTable database where leads are managedWe've created an interface on top of that database for partners to see status of their leadsWe've published a link to that interface so you can access itThe problem is, whenever our users are trying to work with that interface, they are always getting the "lost connection to the server" popup - which is "harmless" (i.e. if you ignore it - everything works just fine), but it looks "scary" enough for users not even to try to proceed. You can see that experience in an the demo video below —Direct link to the same video: https://vimeo.com/928813339/43acd1bbd7Do you guys have any idea what this could be? What is interesting, it doesn't seem to happen to "long-time Airtable users" — i.e., if you "test" with your existing user account (and don't go through the AirTable regis
Hi, I need to create a script that generates a JSON with the information of a record, I have done many tests but I get stuck with the easiest thing, assign the values of the fields to the JSON. Any idea of help or example, thanks a lot. let inputConfig = input.config()let table = base.getTable("CONTRATOS");let record = inputConfig.recordId;// Seleccionar registro de la tablaconst row_rec = await table.selectRecordAsync(record)// Extraer los campos correspondientesconst codigo = row_rec.getCellValueAsString("Codigo")const url = 'https://hook.eu2.make.com/xxxxx'const token = ''const body = {"strBodyRequest": {"BPCode": {"fuente":"CONTRATOS.Código (from Cliente) (from Venta)","valor":codigo},}, }const options = {method: 'POST',headers: new Headers({ 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }),body: JSON.stringify(body)}let response = await fetch(url, options);const result = await response.json();console.log(`Got ${response.status} with body ${JSON.s
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.