Need development and API help? Ask your questions here!
Recently active
Hey Community, I’m hosting a FREE live master class next Thursday on how to query Airtable using SQL. Sign-up and learn the best tools to use (plus some basic SQL) to derive proper insights using your Airtable data. Click to register… :nerd_face: ! techiechic.co How to Query Airtable Using SQL During this free live online master class, we’ll explore 5 tools that will add limitless query abilities to your Airtable base using SQL. Giving you the ability to explore beyond the base and discover Airtable’s true database capability.
Hi, I spent a good part of the day yesterday making changes and adding to a scripting block in my base. It was all working fine and was running from a button in a table. However, today I have discovered that all of my changes are gone and that the script is back to an old version! I have looked at all recent base snapshots, looked through the trash, and tried undo/redo in the code editor but I all to no avail. I had another tab in my browser with the same base open so I am wondering if this prevented my changes from being permanently retained. I have contacted support about this but am wondering if the community has any tricks that might help. Anything is appreciated!
I am wanting to hard code the table variables into the script airtable provides to convert URL’s into attachments, so that I can run it via an automation. This is the script: let settings = input.config({ title: "Convert URLs to attachments", description: `This script will download all attachments from a URL into an attachment field. The source field can be a URL field or any text field containing a URL. Each cell should only contain a single URL.`, items: [ input.config.table("table", { label: "Table" }), input.config.field("urlField", { parentTable: "table", label: "URL field", }), input.config.field("attachmentField", { parentTable: "table", label: "Attachment field", description: "URLs will be downloaded into this field", }), ], }); async function convertURLsToAttachments() {
Hi all I’m trying to update records in a table using vanilla javascript (because I’m building a Bookmarklet, so curl or node won’t work). I’m stuck on a user error “Unprocessable Entity” and the response is of type “cors”, so perhaps there is something wrong with my request headers? fetch("https://api.airtable.com/v0/appfiPFiZHqEAsjAJ/Table%201", { method: "patch", headers: { "Authorization": "Bearer MY_KEY", "Content-type": "application/json", "accept": "application/json" }, body: { "records": [ { "id": "recSKCdIGgAGRUc5c", "fields": { "Field One": "Bla", "Field Two": "BlaBla", "Field Three": "Blubb", } } ] } }) This returns: Any pointers would be much appreciated.
Hi, I’ve created a custom app which uses chart.js and tables to display custom reports on individual records pulling data from linked tables. I am very happy with what has been created but I am unable access these reports outside of the airtable blocks environment. Is there a way to export this data to pdf or create a print functionality (similar to that which exists in the coding block)? I’ve tried using react-pdf but I can’t seem to populate the content of the pdf download. Any help or advise would be greatly appreciated.
I’m trying to synchronize my base using Integromat with Harvest to get the budget spent per project and keep it up to date. I’m able to get the information from Harvest using their API which gives 1 bundle with all the values of every project in an array. The problem is to match the Harvest Project IDs to it’s corresponding Airtable Record ID (Which already has a field with the correct Harvest Project ID). I have tried Upsert Record, Update Record, Airtable API (Patch), I use the filter between the modules and I just don’t understand how to make them match even using Smart Links. Any help or ideas would be appreciated :slightly_smiling_face:
Hi! I’m sorry if this has been asked before and I didn’t search it properly. I’m trying to modify the “delete duplicates” script. I’m working on a sign in/sign out attendance table. I have 2 form views, one that allows the student to sign in by selecting their name, a linked field, and then entering the date/time they’re checking in, and a very similar one that they add the time they signed out. This results in 2 records, one with the time in and one with the time out. The time out cell is empty when the time in cell is full and vice versa. What I want it to do is to delete the second entry, but before it does that, combine the two records, so that both the time in field and the time out field are filled. My thought of how to do that is when X comparison field is full, Y comparison field from the record where X comparison field is empty is copied to Y comparison field on X=full record. I’m not certain of the commands to make this happen or if it’s even possible. I’d be grateful for any
Use case The recently released, in beta, Metadata API is a great start to a long requested feature by developers here. Providing programmatic access to a user’s base IDs/names is immensely helpful and should help simplify many development workflows. One addition that I’m sure would be helpful for many developers is adding information and routes to tailor API requests based on a specific Airtable Workspace. While many users and organizations probably limit the number of workspaces they have based on features/pricing (e.g. have 1 Pro workspace where bases that need custom apps and scripting live, and have ‘N’ free workspaces to more logically group bases that don’t need pro features). For my own account, a simplified version of the workspace I have access to is: Work (Pro account; bases relevant to all departments) Work (Free account; bases relevant to my specific team) Personal Testing Many of the Airtable apps I develop are targeted towards workspace #1: the cross-cutting, company-wi
Hi, I’ve tried installing and launching a hello world app from the documentation for the first time today. I encountered a few issues initially trying to install the CLI, however I eventually seemed to get it working. The issue I’m having now is with the ‘block run’ command - after successfully using block init, the block run command leads to a large amount of errors which seem to stem from a few files not being found during the start of the process: /Users/craigronald/.nvm/versions/node/v13.14.0/lib/node_modules/@airtable/blocks-cli/transpiled/src/builder/node_modules/yaml/index.d.ts: Cannot read property 'get' of undefined /Users/craigronald/.nvm/versions/node/v13.14.0/lib/node_modules/@airtable/blocks-cli/transpiled/src/builder/node_modules/yaml/types.d.ts: Cannot read property 'get' of undefined /Users/craigronald/.nvm/versions/node/v13.14.0/lib/node_modules/@airtable/blocks-cli/transpiled/src/builder/node_modules/word-wrap/index.d.ts: `export =` is not supported by @babel/plugin
I’m trying to delete duplicate records from a table. I have table “Table1” that contains linked fields “Field1” and “Field2”. Where multiple records have the same values in “Field1” and the same values in “Field2”, I want to delete all duplicate records that are newest, leaving the original record that is oldest. In the below example (just for illustration purposes), “Record1” and “Record2” have the same values in “Field1” and “Field2”, and “Record3” and “Record4” have the same values in “Field1” and “Field2”. After running the script, “Record2” and “Record4” should be deleted (they’re the newest) and “Record1” and “Record3” should remain (they’re the oldest). [ {"Record": "Record1", {"Fields": [{"Field1": "Value1"}, {"Field2": "Value2"}], "Created": "2020-01-01"} {"Record": "Record2", {"Fields": [{"Field1": "Value1"}, {"Field2": "Value2"}], "Created": "2020-02-02"} {"Record": "Record3", {"Fields": [{"Field1": "Value3"}, {"Field2": "Value4"}], "Created": "2020-03-03"} {
Hi there! I´m developing a chatbot using Twilio and at some point, I need to collect the data inputs from the clients that talk to my bot, and then post it into an airtable base. I don´t have much coding skills, so my guide was this Dabble Lab tutorial: https://www.youtube.com/watch?v=xjt9YhNFrno However, the Twilio function proposed in the video isn´t working. Here is the code: exports.handler = function(context, event, callback) { let member = { name : event.name, email : event.email, date : Date.now() }; var Airtable = require('airtable'); var base = new Airtable({apiKey: context.AIRTABLE_API_KEY}).base('appISrkMnNdL65Lzj'); base('Members').create(member, function(err, record) { if (err) { console.error(err); return; } console.log(record.getId()); callback(null, member); }); }; When I try to make a POST request via Postman, this is what happens in my Twilio Console: And this is the capture of Postma
Hey there, expandRecord is really a great feature because it can eliminate the need for me to develop edit record forms in my apps, but for that to truly be used for that, it needs to accept the list of fields to display. @Taylor_Savage, is there an ETA for that? Related question - anybody knows what view is used to display the expanded record? If I’ll know how to control that, I’ll be able to edit the displayed and hidden fields in that specific view. Thanks, Ronen Babayoff Eazyapps
Hello I am trying to write a script that detects duplicates. Currently the if statement is triggered and it increase i(which tells me how many duplicates their are), even when the two fields do not match. let table = base.getTable(“Policy”); let view = table.getView(“All Fields”); let first = table.getField(“PolicyNumber”); //Lookup Field let sec = table.getField(“PolicyNumber”); let result = await view.selectRecordsAsync({ sorts: [{field: “PolicyNumber”, direction: “asc”}]}); let result2 = await view.selectRecordsAsync({ sorts: [{field: “PolicyNumber”, direction: “asc”}]}); for (let record1 of result.records) { let thedup = record1.getCellValue(first) let i = 0; output.text(thedup) for (let record2 of result2.records){ let cop = record2.getCellValue(sec); output.text(cop) if (thedup=cop){ i++ if(i>1){ output.text(“help”) } } } } This is the output i currently have 12 entires: B0750RNMFP1709519 - 001 B0750RNMFP1709519 - 001 B0750RNMFP1709519 - 003 help B0750RNMFP1709519 - 004 help B
How can we get the particular data to get searched and populated with Airtable formulas for search on the Website?
I have a table 1 “user” linked to a table 2 “event”. Via Post API, the users create any events where I collect de {user.email} like "email": "{user.email}" ]. This is to be able to link users informations in the Event table with lookup. Then, the goal is to display event with a GET request and add event information + users informations. But, the problem is, with the POST request, i can’t send a Text string (le user email so) from the API to the linked field… It necessary to give the row ID matching with the User record from the User Table. Do you have any idea to be able to directly send, via API call, the user email as text ? Thanks you for your help
Does anyone know if you can get babel plugins working with base run? I’d like to use Styled Components and the css prop so I can write quick inline css. Is this possible?
Hi, I’m stuck with one problem. I’d like to send Mailjet email with the Airtable Script automation. I succeed to send a Mailjet SMS with this code : let inputConfig = input.config(); // the input variables in Airtable let response = await fetch('https://api.mailjet.com/v4/sms-send', { method: 'POST', body: JSON.stringify(inputConfig), headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer Mykey' }, }); The problem is that, in Mailjet dev API, they said to use this code for sending Mailjet template : curl -s \ -X POST \ --user "$MJ_APIKEY_PUBLIC:$MJ_APIKEY_PRIVATE" \ https://api.mailjet.com/v3.1/send \ -H 'Content-Type: application/json' \ -d '{ "Messages":[ { "From": { "Email": "pilot@mailjet.com", "Name": "Mailjet Pilot" }, "To": [ { "Email": "passenger1@mailjet.com", "Name": "passenger 1" } ], "TemplateID":
Hi, I am experiencing errors in airtable’s ‘Find a Record’ in Zapier. Does anyone also has the same issues? Can you tell me what have you done to fix it? thank you very much in advance.
Has someone in the community created an Appsheet App sourcing Airtable data, where access is limited only to the data associated with the app registered user (surely a fundamental use case!)? I cannot get it to work. I have created an Appsheet app linked to a single Airtable table. All looks okay after making the initial connection. I have a single list view which displays my Airtable data, completely unfiltered. I then tried to set up the user access restriction. Go to Security section (in Appsheet) and create a security filter where email column in Airtable = USEREMAIL(). Save. And now my app is broken. Message is: Unable to fetch app definition. Error: Data table ‘’ is not accessible due to: Error executing AirTable operation. Status code: 422. When I remove the filter this error goes away. Help!
hey, is it possible to add my Airtable calendar to a Wix website? if so, how?
Hi all! Starting to dig in to the scripting block a bit more… is there a way to force the script to run automatically? Wrote a script to watch a table and make sure everything is linked to the same record on a junction table… but this is rendered useless if I have to train people to hit the button every time they login. :slightly_smiling_face:
I’m trying to make a Block that can detect changes (such as deletes) to the Airtable and notify another service. It doesn’t seem possible to efficiently detect deletes using the Airtable API with the 10’s of thousands of records we have in our Airtables. I have a basic prototype going, the only issue is that the block can’t capture any events from before it loads. So if the block takes a while to load and the user is fast and deletes a few records, the block will miss it. I noticed that there is another function “registerRecordActionDataCallback” that passes in button events that occurred before block is loaded Your block will not receive “perform record action” events until a callback is registered - they’re held until registration to ensure the block is ready to handle the event (e.g. has finished loading). Airtable Blocks SDK Is there anyway to do something similar with records or even cursor. Even if I could get a list of cursor events before the block loads, I’d be able to check
I have created an excel power query to retrieve data from airtable, I would need to expand this to be able to pull from multiple tables which is fine. My question is, has anyone encountered any issues with making multiple data pulls a day from airtable and getting IP address blocked, similar to what can happen with web scraping data?
I have about 4 tables all linked together (Activity, Resource, Activity + Resource junction called ResourceInstance and Calendar). First is an activity/Resource junction to create what I have called a ResourceInstance. This ResourceInstance record is given a quantity and then assigned to one or many dates. I have that ResourceInstance linked to a Calendar table that is what is shown above. This is effectively a junction between ResourceInstance and Date. There is obviously only one record for each date on the Calendar table, but can be multiple ResourceInstances (even with the same Resource) can exist on the same day creating these multiple values in each column. My end goal is to prepare this date for visualization in bar/line charts, grouped by Resource, not ResourceInstance. (i.e. LaborCrew 1 usage for each day, with many different activities using it, often on the same day.) With this in mind: –What integration would work best for charting over time (by day)? (AirTable charts seem
The strangest things happens when I execute the simple below script in Airtable. Does anyone know why it just stops after 15 created records and does not finish up to 50? let table = base.getTable(“Clients”); for (let i=0; i<50; i++) { table.createRecordAsync({“Number”: i}); }
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.