Need development and API help? Ask your questions here!
Recently active
Hello All, I am trying to find a way in Airtable to have specific record fields sync between tables, where the records across the tables are the same but have different fields with some being similar. This would mean that if you had two tables, with two duplicate record titles, that specific fields would update across both records if only one was updated. For example, let’s say you have Investors and Companies as table titles. There is a column in Companies that links to Investors. Some of those companies will also be investors, so they would have a record in both tables. How can I have it so that both records will update when I update one of them? Best, Brennan
The code below is really long, sorry about that, I’m still cleaning up the functions. My script isn’t running, it goes through the code as the console log tests return but none of the functions are working. The last function I created was an async function called revExp that I’ve commented out incase that was the reason but it still isn’t working. Any help would be appreciated. let table = base.getTable('MASTER'); let tableTwo = base.getTable('Truck Breakdown'); let view = table.getView('Master View'); let viewTwo = tableTwo.getView('Grid view'); let tableThree = base.getTable('Customer Breakdown'); let viewThree = tableThree.getView('Grid view'); //records from Master file let result = await view.selectRecordsAsync(); //records from By truck file let resultTwo = await viewTwo.selectRecordsAsync(); //records from Customer breakdwon file let resultThree = await viewThree.selectRecordsAsync(); const truck = "Truck No", customer = "Customer"; //read array for Truck No function readArra
How can i execute the Js/Node js code from within the Airtable Column ? It should capture the record Id from there and do what is needed.
Hi, I’m writing a program in Node.js using Airtable api that reads from my Airtable table and send the content to students on WhatsApp. I have a table with following columns. Name | Number | Unit 1 Text | Unit 1 File | Unit 2 Text | Unit 2 File and so on What I’m trying to achieve is at every NEXT button click I have to send a new unit. For eg: Send Unit 1 Next button click Send Unit 2 Next button click Send Unit 3 and so on… I need help with the method that move through columns of a particular row? Any advice or solution is appreciated ! Thank you
Hi there - How is it possible to parse (convert string into object with keys) in airtable scripting? Here is some sample string text: { a: 'somestring', b: 42, c: false },{ a: 'somethine else', b: 10, c: true} The output should be two objects with three keys
Hi there - Trying to run a script using the button field but am not sure how to push the values from the table and record into the script. Suggestions?
Hi there - How is it possible to add a list of IDs into a createrecordasync function? For instance, we have: id_array: [recK0FKsUDicD8Lar,recP4uFoqMq9qJquY,recudo4XILtrW5IYd] const table_Output = base.getTable(“Output_Results”) table_Output.createRecordsAsync([ {fields: { Client: [{id: clientID}], Symptom: [{id: {id_array}]} }]) where we replace id_array with the actual array Thanks!
Is it possible to create a new view automatically with scripting?
Hello, I’m trying to plug a table into Zendesk. Even though I’ve set all the access role correctly (Admin), I still have an error message saying “You do not have access to this page. Please contact the account owner of this help desk for further help.” Any idea on why I have this issue? Does come from Zendesk? Thanks
I’ve gone documentation blind, so my apologies for what is likely an obvious question. What is the syntax for traversing/updating nested objects. Specifically, Simple Type works fine: await table.updateRecordAsync(record.id,{“Estimate ID”:12345}) This does not: await table.updateRecordAsync(record.id,{“Status”:‘Estimate’}) Second one is a single select field, and based on the error, I’m supposed to address it like an array or a nested object - but neither . nor notation seems to work, and I don’t see any call or casting functions that apply. Please tell me what Im missing.
I see that there are limitations on Apps per base that depends on your plan. This limitation applies to Custom Apps or only for Apps in the marketplace? If there is another limit, what is it?
A lot of my custom apps have been hanging on their loading screens for several minutes. Am I simply loading too much data (about 55 fields) from too many records (about 11,500 in the table I’m selecting with getTableByName) ? Am I using the useRecords hook wrong? I made a test app with just the Hello World template and loaded in my records, so I’m fairly sure the issue isn’t anything else I wrote… Any suggestions would be very appreciated! Here is the way I am loading data into the Hello World app: import { initializeBlock, useBase, useRecords, } from "@airtable/blocks/ui"; import React from 'react'; function HelloWorldApp() { const base = useBase(); const lineItems= base.getTableByNameIfExists("Items"); const view1 = lineItems.getViewByName("View 1"); const opts = { sorts: [ { field: "On hold" }, { field: "Locked" }, { field: "Priority", direction: "desc" }, { field: "Was on hold previously", direction
Exchange rate table An exchange rate is given for each currency, within each month’s data rage Project details tables Shows the project start date and currency I’m trying to write a script that: Looks at each project ID, its currency and start date Then looks at the Exchange rate table, matches the currency and finds the right date range that the Project start date fits into (The exchange rate table only has rates for past months. So if the Project start date isn’t in a date rate in the table, it should take the latest date for that currency) Then in the Project details table includes the correct exchange rate in the field Exchnage rate My current code is: let mainTable = base.getTable("Project details"); let maintTableRecords = await mainTable.selectRecordsAsync({fields:["Project start date"]}); let lookupTable = base.getTable("Budgeting exchange rates"); let lookupRangeRecords = await lookupTable.selectRecordsAsync({fields:["Start date","Exchange rate"]}); for (let record of main
I am making a data entry app that is similar to an Airtable Form View. For a certain field, I am looking for my users to choose a single item from a drop-down menu of available options. I am wondering if there is a way to replicate the select style used in the Airtable form views: I see the ChoiceToken React component and the Select React component in the Apps API reference, but I’m not sure how to populate the Select component with ChoiceTokens. My attempt led me to a Select component populated with blank options. const base = useBase(); const newEntryTable = base.getTableByName("Example Table"); const field = newEntryTable.getFieldByName("Choose One"); function SelectExample() { const [value, setValue] = useState(options[0].value); return ( <Select options={field.options.choices.map(choice => ( <ChoiceToken key={choice.id} choice={choice} marginRight={1} /> ))} value={value} onChange={newValue => setValue(new
Working with Airtable’s API as a developer has been frustrating because users want to rename columns and tables, but every time they do it breaks integration code. They are either restricted in the changes they can make to their user interface, or dependent on developers to make changes simultaneously. Unique IDs for fields and tables have started to be introduced, but they cannot be used in queries and data is returned with the field names not the ids, so they can’t be used consistently in code. More importantly they are meaningless to anyone reading them, so they require more code and more complex abstractions and make the code harder to understand. This problem has been effectively solved in other systems for years using API names and display names. The API name is a valid JSON key that is used in the API. When the display name (used in the UI) is changed the API name stays the same, so no code breaks. This would substantially reduce the fragility and frustration of working with Air
Hi Team While working on the airtable api and fetching the data from the table. We have a column named as Type which is a single select . We have set some possible values inside it like [ “Video”, “Article”, “Blog Post”, “Webinar” ] Please let me know if there is any way through which we can access these values via the api’s. I have not found any way so far. I have also attached a image with this. Looking forward to hear from you. Best Regards, Gaganjot Kaur
Hello, I’m wrestling with one thing that is very easy in Excel (or Google Sheets), but I haven’t be able to find how it can be implemented in Airtable. I’ve created a Table. I add a record ever day to track the number of occurrences such as: Visitors to an establishment. Date Day Visits % Change 23.3. Mo 27 NA 25.3. Tu 28 = (28/27)-1 (in formula in Excel (C2/C1) - 1 26.3. We 30 = (30/28)-1 (in formula in Excel (C3/C2) - 1 27.3 Th 35 = (35/30)-1 (in formula in Excel (C4/C3) - 1 etc Where the % Change Column (or Field in Airtable speak) is, of course, calculated by a Formula. The Excel version is here: Is it possible to achieve this with a Script Block? If yes, I will upgrade to Pro and try it. Any help would be very much appreciated. Peter
Hi Everyone, I’m pleased to present Airtable.jl, a wrapper of the API for the julia programming language. It’s a pretty simple little package, but it’s my first time working in any depth with a WebAPI, so I’m pretty pleased to have it working as well as it does. Currently, it has support for get, post, patch and delete methods, and a special function query that is basically get, but handles pagination in the response. Please take a look at the docs, and feel free to open issues if you run into any problems! Here’s an example of what you can do, using this dummy table: julia> using Airtable julia> cred = Airtable.Credential() # Pulls from environmental variable "AIRTABLE_KEY" Airtable.Credential(<secrets>) julia> abase = AirBase("appphImnhJO8AXmmo") Airtable Base 'appphImnhJO8AXmmo' julia> tab = AirTable("Table 1", abase) AirTable("Table 1") julia> records = Airtable.query(tab) 3-element Vector{AirRecord}: AirRecord("recMc1HOSIxQPJyyc", AirTable("Table 1"), (Na
Hi all! I’m new to Airtable and trying to figure out how to pull multiple variables out of a single long text field. I’m pulling the Description from an event in Google Calendar and syncing it into a Description field in Airtable. This field will have some things defined in a predictable pattern, such as the Zoom URL, name of the presenter, etc. - each corresponding to a field that exists in Airtable. What is the best way to set this up to be parsed through in Airtable? Is there a tutorial out there that could point me in the right direction? Feel free to suggest something else if I’m going about this the wrong way. Thank you!
I want to fetch records from another base (for reasons) to output in the scripting app. My code works but I must be unable to find much documentation on how to paginate Airtable. Is there a better way to get all records? let offset = ''; while (offset != "stop"){ let response = await fetch(`https://api.airtable.com/v0/${remoteBaseID}/${remoteTableID}?api_key=${apiKey}&offset=${offset}`); let json = await response.json(); if (json.offset !== undefined){ offset = json.offset remoteRecords.push(json.records) }else{ remoteRecords.push(json.records) break } } Open to suggestions.
Hi All, This is for a Twilio Call IVR. Is there a way with Airtable-Node Module to filter by Field and not ID. I guess its kinda like a number look up and give back the value of the field? 1234 gathered digits on a call gets back a field, like status. The code below returns four IDs Sorry I am learning to code JS. exports.handler = async (event, context, callback) => { try { const { records } = await airtable.list() const appointments = records.map((appointment) => { //console.log(appointment) const id = appointment const { name, PIN, Result, Status, Phone_Number } = appointment.fields console.log(PIN) // const url = image[0].url return { id, name, PIN, Result, Status, Phone_Number } }) callback(null, { statusCode: 200, body: JSON.stringify( appointments ), }) } catch (err) { callback(null, { statusCode: 500, body: 'Server Error', }) } }
I have 2 tables (Part Processes Table and Jobs Processes Table). The Part Processes Table contains all the operations for making a part. Every time a new purchase order comes in a job is created and linked to a particular part. I would like to create a script that grabs the linked records in the Part Processes Table and inserts them into the Jobs Processes Table every time a new job is created. Can anyone provide me with an example of something similar that I can modify for my purposes?
Hi ! I hope you can help me, I am trying to get the cell value of a record I have from an automation. I checked all the documentation and don’t understand what’s wrong (except maybe that it just doesn’t work with airtable automation ?) Anyway here is my code let requestTable = base.getTable('Demandes techs'); let request = input.config(); let record = request.record_id; let statusWhenQuote = record.getCellValueAsString('Quote status'); console.log(record.getCellValueAsString("Quote status")); Many thanks for your help
I can’t for the life of me to get this script to work. I’m trying to do a vlookup across two tables. “In Contract” table is the one that I’m trying use the information from “Movie/Episode Title” Column and find that same title in the “Episode/Movie Title” in the “All Assets” table and then grab the info from the “Program/ Asset ID” column and paste that into the “Asset ID” column on the “In Contract” table. let mainTable = base.getTable(“In Contract”); let mainTableRecords = await mainTable.selectRecordsAsync({fields:[“Episode/Movie Title”]}); let lookupTable = base.getTable(“All Assets”) let lookupRangeRecords = await lookupTable.selectRecordsAsync({fields:[“Movie/Episode Title”,“Program/ Asset ID”]}); for (let record of mainTableRecords.records) { let lookupvalue = record.getCellValue(“Episode/Movie Title”); for (let reangeRecord of lookupRangeRecords.records) { if (rangeRecord.getCellValue("Movie/Episode Title") === lookupValue). { let returnValue = rangeRecord.getCellV
Trying to add more than one field under the createRecordsAsync action. This is my single field being created right now, which is pulling (successfully) the name from an array. What I’m trying to do is perhaps a tad loftier than I’m indicating, but I’d like to populate the linked record field of the created record with the record ID of another record. Can I do that in this step here? await table.createRecordsAsync([ { fields: {"Name": tempArray[a]}, //hoping to insert the link via record ID at this stage here. }, ]);
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.