Need development and API help? Ask your questions here!
Recently active
Hi! Previously, I uploaded an attachment to Airtable (let’s say A), using API. Now, I have replaced it with some other (let’s say B). Now, generally since A was replaced with B, there should be no trace left of A - right? But actually, when I go to the URL of A, the image is still visible. Should I assume it’s still there in my base, still holding 1mb (size of A) of my Attachment space? Since I have replaced it, why is it still viewable? So, is it possible to make Airtable delete the image permanently, so it doesn’t occupy space in my attachments limit of 5GB? Or any workaround for this? I don’t want to keep track of previous images, and if user replaces it, the previous one should be permanently deleted, and the new one would appear from then. Any help would be great :smiley_cat: Thanks! :)
Continuing the discussion from Exporting a formatted list of linked records: Hello everyone ! I’m trying to find a solution to my problem but I think it’s beyond my capabilities. I’m learning JavaScript, so I’m able to take a script that’s already written, and modify it minimally, but in this particular case, I can’t figure out how to make it work. I integrated this script into an equipment rental database, and managed to get it to work but only under one particular condition. In my assets (“Types”) table, some assets are linked to a rental (“Locations” table) but some are not. The script only works if all the assets are linked to a rental. It breaks if the first asset (position [0] of the array) of the list does not have a linked record. I figured it was not working because the field was not populated, so I added a new rental to all the other assets to see if it worked and it did. The problem is that I have a list of over 700 assets, and they aren’t always all rented at the same time.
Hi, I am super new to Airtable scripts and I am stuck with trying to fix this error. It looks like I need to add the topLevelAwait module somewhere, but not sure where. So far what I did was to install the Hello-World app in my localhost and then replaced the contents of index.js with the contents of the [YouTube Example Script](https://airtable.com/marketplace/scraGQUFvORtvmHC5/import-youtube-analytics) since it does similar things to what I need and I would like to learn from it. The issue is that when I do a block release I am getting: ModuleParseError: Module parse failed: The top-level-await experiment is not enabled (set experiments.topLevelAwait: true to enabled it) File was processed with these loaders: * ../../../../usr/local/lib/node_modules/@airtable/blocks-cli/node_modules/babel-loader/lib/index.js You may need an additional loader to handle the result of these loaders. Any help will be appreciated, Thanks in advance!
Hello, I just enabled the pro version of Airtable in order to use the Maps block. I have just a little over 3000 rows, each with an address. After working (quite slowly) to add the 400 addresses to the map overnight, the block stopped and displayed the message “API quota exceeded. Click to retry”. If I retry right away, it runs blank for a while then displays the message again. If I wait a bit before clicking, it will start adding a handful of addresses. I’ve still got about 2600 rows to go and don’t want to keep coming back to this and clicking retry every couple of minutes… How can I get all my addresses properly added ? My airtable is a simple list of 3000 business addresses I imported from excel. I was handling this list with geobatch before with no issue. Now, I am left scratching my head as to why is this so slow and seemingly complicated? A few years ago this kind of thing was easily solved using excel and businessmap, but I was hoping airtable and a simple google API could h
Hello, I’m trying to access paginated records via API and return specified fields in the ‘fields’ query parameter. But when I include pagination offset to the following requests and modify fields that should be included in response, it makes no effect. Only fields that were specified in the first request are returned, no matter if I don’t pass ‘fields’ parameter in the first request and when I do in the subsequent requests with included pagination offset. Is it possible to achieve?
I’m attempting to add a custom gif into a custom app. The file is stored in frontend/assets/selectTable.gif. import selectTable from '../assets/selectTable.gif' ... <img src={selectTable} /> In my terminal window, I see Bundle Error: Unexpected character ''. Does anyone know how to load an image?
I’m looking to find a way to trim (or crop) of an audio mp3 file (in an attachment field) and paste it into a different field based on the timestamps I give it. I’m unable to find anything out there that can do this in the background (like Zapier), and am wondering if a script could do this. Thoughts? Thanks!
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
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.