Need development and API help? Ask your questions here!
Recently active
Hello. I have been running a number of scripts on different bases, most of these bases are in the 10s of thousands of records. I haven’t made many (if any) changes to these scripts but am noticing an incredible amount slow-down, primarily when I do a ‘while’ loop to update/create records. Example: while(updArr.length > 0){ await tbl.updateRecordsAsync(updArr.slice(0,50)); updArr = updArr.slice(50); } I wish I had numbers for how much longer these scripts are taking compared to how long they used to but it’s taking processes that used to take probably less than a minute and turning some of them into 5-10 minutes scripts. Far past an acceptable slow down for our use cases. I’m wondering if anyone knows why this would be happening to us, across multiple bases and scripts. Thanks in advance! Update: Part of me thinks that this might have to do with lookups, rollups, and counts. When I run one of these scripts, it looks like it won’t advance till the next loop until these have b
MacOS Mojave 10.14.5 (18F132) airtable/blocks: 1.0.0 table.checkPermissionsForCreateField('someFieldName', FieldType.DURATION, {durationFormat: 'h.mm.ss.SSS'}) Throws this error: “Can’t create field: invalid field config. Failed schema validation: .0.type does not match one of the possible values, .0.options.precision is missing, durationFormat is not included in th…” Same for table.createFieldAsync. Despite these being the correct options according to Airtable Blocks SDK Creating other field types works just fine. @somehats could this be a bug?
I’m looking to have rows within a specific base tie to different slack channels. For example, when a change is made to Row 1 within Base A, it notifies Channel 1. When a change is made to Row 2 within Base A, it notifies Channel 2, etc. Curious how this would be possible. Thanks in advance!
I will like to add a button to each record that once press will initiate a Curl request based on Records defined in that specific row.
Now Integromat Airtable v.3 knows when I change Airtable field name. When I rename the field the workflow in Integromat doesn’t break as it was with v.2. There was a bug in v.3 a few days ago when the Watcher module didn’t work and I had to reverse to v.2 but it is now fixed too. In addition to that loading of the Airtable Update module is also much faster because now it only shows the dynamic list of fields that are not hidden, unlike in v.2 that would take 5 minutes to load because it was loading them all. I like what I see in Integromat.
I’m trying to update an existing record by adding an attachment with a url that points to a remote jpg file. I’m getting the error “INVALID_ATTACHMENT_OBJECT”, which is not very helpful. curl -v -X PATCH https://api.airtable.com/v0/applxOrnAao5mXXXfek/Table%201 -H “Authorization: Bearer xxx” -H “Content-Type: application/json” –data ‘{ “records”: [ { “id”: “recySiYkz0crwyS5P”, “fields”: { “Notes”: “testing 1”, “Attachments”: [ { “id”: “1”, “size”: 26317, “url”: “https://www.filepicker.io/api/file/5YTJXioCQG0tYWPw6OPw”, “type”: “image/jpeg” } ] } } ] }’ I’m relatively new to the API so perhaps it’s something I’ve overlooked. Thanks
Hallo I need some more brain-power… I have a table with Projects and a table with Task. I will like to combine all Projects and Task in another table ProjectTask I have try with a automation, but I can’t group all the ‘Create record’ in one action. That means that I need to create a ‘Create record’ for each task, that will fail when I add a new task to the table. Is it possible to create one ‘Create record’ there look at all the task? I sure is can be handle by a script – can anyone help me with a script?
Hi, everyone! I would like to change the value of a record by sending an email. For example, I want that when sending an email to a specific email address, thanks to the subject of the email a record in a table changes its content. Is that possible? Thanks in advance!
I’m currently trying to clone one airtable into a different airtable. When I run my code, I eventually get timed out after copying anywhere from 100 - 700 rows. Is there anything I can do to ensure I don’t get disconnected to airtable. ‘’’ await airTS(‘Applicants’).select({ // Selecting the first 3 records in Students: maxRecords: maxRecords, view: “All applicants” }).eachPage(async function page(records, fetchNextPage) { await records.map(async function(record, count) { var keyValue = count.toString(); //each page resets count to 0, so count is 0-99 if (pageCount > 0) { keyValue = (pageCount*100+count).toString(); } // GCP Storage CODE const bucket = storage.bucket(bucketname); var theURL = record.get('Resume'); var bigtableResumeURL; if (theURL) { theURL = theURL[0]['url']; //create unique file name for gcp on storage and bigtable var lastPartOfFileName = theURL.substring(theURL.lastIndexOf("/") + 1);
I wonder if somebody familiar with Integromat can tell me if this can be done. I have a workflow starting with Airtable Watch Records module → Airtable Retrieve Record module ->… While this works OK, I don’t have many credits left at the end of the month with so many workflows I have running. I tested using Integromat iOS/Android app and it seems it doesn’t consume credits for stand-by operation, it just consumes the credits when the workflow is running. So I would prefer to run the workflow manually from the mobile device. It’s actually convenient. However, while most other workflows work that way, I can’t get it work with Airtable. Seems the Airtable Watch module is required, because otherwise, how would Airtable Retrieve Record module know what record to retrieve. Or is there any way to get around it? What I want is to launch the Integromat workflow from mobile. The issue is I can’t get the Android/iOS module connected with Airtable Watch module. This may be more or less questio
I know it is possible to get a list of selected records but is it possible to (un)select a record in the database from inside a custom app? I have been searching quite extensively. It seems to me to be a basic functionality but I just can’t find a way how to do it.
Hi! Is there a listener or hook to watch specific app lifecycle events? The main use-case we’re looking for is when the app gets uninstalled (aka deleted). Haven’t found any relevant info in the Blocks API. Thanks!
I have a scripting block that, for each record R in a given table, pulls a bunch of data from a different table, calculates a number N, and updates a field F for that R. The problem is some records are updated and others are not. I know that records are being pulled correctly as I print N for every R and it all calculates correctly. I know that the update code works as some records will update. One interesting thing to note: the updated R I think are all old and the non-updating ones were recently added. I thought this might have been a Free/Plus/Pro account issue as only Pro supports Apps and maybe older records were grandfathered but I have paid for Pro and still no go. Is this a permissions issue? By the way, are apps the same as scripting blocks or different? Code in question below: let table = base.getTable(BaseSpecificNames.cashFlowTable); let view = table.getView(BaseSpecificNames.sortedView); let query = await view.selectRecordsAsync(); let filtered = query.records; let dtab
Hi, is there a way to check the validity of a URL from a record? I would consider a URL to be valid if it is reachable and does not lead to a 404 error. Using Google I have seen examples as the following: var request = new XMLHttpRequest(); request.open('GET', 'http://www.mozilla.org', true); request.onreadystatechange = function(){ if (request.readyState === 4){ if (request.status === 404) { alert("Oh no, it does not exist!"); } } }; request.send(); But apparently XMLHttpRequest() is not known in Airtable Scripting block. Any hint would be appreciated! Thanks, Stefan
Hi, I’m wondering if anybody can help me write a script to convert .mov files into .mp4 automatically in Airtable. I currently use CloudConvert but since they have an API, I thought there may be a way to have this done in Airtable. I know very little programming and am not sure how to even start making this work. https://sandbox.cloudconvert.com/api/v2/jobs/builder#
Hi All, So I am trying to create a new record in Airtable using google app script. I have been using the API documentation and reading the forum but can’t seem to get it to work. Any help would be much appreciated. Thank you. Code snippet var baseKey = 'XXX'; var airtableAPIKey = 'XXX'; var airtableAPIEndpoint = 'https://api.airtable.com/v0/'; var tableName = 'Table 3'; var payload = { "records": [ {"fields": { "Name": "Jeff", "Date": "2020-11-15", "Status": "Done" }} ] }; function AirPost(baseKey, tableName, payload) { var options = { method: 'POST', headers: { 'Authorization ': 'Bearer ' + airtableAPIKey, 'Content-Type ' : 'application/json' }, payload : JSON.stringify(payload), muteHttpExceptions : true }; var response = UrlFetchApp.fetch(airtableAPIEndpoint + baseKey + "/" + encodeURIComponent(tableName), options).getContentText(); return(response); }
I am doing a onedrive link generator , however , I found file path structure is very important to me. file path of URL is like https://walttaz-my.sharepoint.com/personal/aloha631_office-365_com_tw/_layouts/15/Doc.aspx?sourcedoc={69284668-F854-4789-A74F-C9F6DA0C1AAB}&file=Link%20List.xlsx&action=default&mobileredirect=true I need convert it to something that I can understand I found there are some sites which are able to convert url to file structure https://www.convertstring.com/zh_TW/EncodeDecode/UrlDecode How can I convert it automatically within airtable?
Hello, I have a database with a lot of companys and company’s informations. I would like to find the linkedin URL of the CEO for each company. So I would like to create a script that take the value “company name” and that search on google : site:linkedin.com/in ‘CEO’ OR ‘Co-fondateur’ AND “company name” and return in the same record the first link found. I never practice on javascript… so someone may help me with that please ? Thank you
Hi, everyone! I need your help: I have installed the scripting app, and I am trying to make a report going through all the records in one of my tables. I would like to be able to compare the date in one of the columns (type Last Modified Time) with the current date (today), because I only want to output records that are 2 days old or less. I’ve tried some scripts I’ve seen around here (if (DATETIME_DIFF (TODAY (), {theDate}, ‘d’)> 2)), but they don’t work for me. Thank you.
Hello Community, Trying to create my first Airtable App by following the Hello World example and running into a number of npm errors and issues. If anyone can provide a bit of guidance on how to resolve this it would be greatly appreciated! The first error occurs when trying to run ➜ Airtable npm install -g @airtable/blocks-cli npm WARN deprecated urix@0.1.0: P npm WARN deprecated resolve-url@0.2.1: npm WARN deprecated fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2. npm WARN deprecated chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies. npm WARN deprecated fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2. npm WARN deprecated chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies. npm ERR! code ENOENT npm ERR! syscall chmod npm ERR! path /usr/local/lib/node_modules/
We’ve built a custom API call to push form data into Airtable, this works fine when working on my localhost environment but when deployed to our staging site we get the following error returned from the API {"error":{"type":"AUTHENTICATION_REQUIRED","message":"Authentication required"}} There is no difference between any of the code base, the tables it references or the API keys. Is there some additional setup needed to allow these requests to be pushed up from a specific domain?
Hi, I copied Airtable’s Currency Conversion Import script and kept everything the same except renamed the table and fields to the following: const table = base.getTable(‘Currencies & Exchange Rates’); const conversion_field = ‘USD → Currency (Non-Static)’ const currency_code_field = ‘Currency’; I’m currently getting the following error message when I try to run the script: What’s the issue here and how can I fix this? I have extremely limited JavaScript skills, I only know what I’ve used by copying other template scripts. Pasting the full script below in case helpful. Continuing the discussion from Currency Conversion Scripting Example:
Hi all, my first new topic. My background includes coding in many languages, working with mysql, and other database tools (filemaker). New to scripting in AT. Have a field that is a Link field to another record called “art# FK to Inventory”. And as the name implies, the link points to the Primary Key (aka the first field in a record here in AirTable world). Some of the records have this field blank. Luckily i have a backup copy of this field that has the data that needs to go into this field. In my first foray into scripting in AirTable (AT), i searched around in scripting basics and a bunch in this fine topic and found the code i needed to try what i thought might work to copy the backup field, which is a Text field, and put it into the Lookup field. Before i hit Run, i put a Break into the code to stop after finding just one blank field to fix just in case. So then I hit Run button to test (i have a backup copy of my base), and got this display: When i hit the Save button, i then go
What would be the best way to format and clean a field with Instagram URLs? I have a CRM built on Airtable and one of the fields is the contact’s instagram details. But some of them have been entered as ‘@myinstagram’, some simply as ‘myinstagram’ and some as ‘https://instagram.com/instagram’. What would be the best way to format all of them as URLs? Thank you!
Hey all. I’ve got an Automation script seemingly close to get the Youtube Video ID from a full URL which I found here. Script from link above <script type="text/javascript"> function youtube_parser(url){ var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#&?]*).*/; var match = url.match(regExp); return (match&&match[7].length==11)? match[7] : false; } </script> Goal: I’m trying to take a Youtube URL in an existing field: myInput or https://www.youtube.com/watch?v=YAIlMUX9VLg and strip out only YAIlMUX9VLg to pass onto the next step (or output to the field Video ID, doesn’t matter). I’m feel like I’m so close but at the end of my copy/paste/adapt coding skills. Here’s my code: let myTable = base.getTable("Video Tracker"); let query = await myTable.selectRecordsAsync(); let myUpdateField = myTable.getField('Video ID'); console.log(query.records); function youtube_parser(myInput){ var regExp = /^.*(youtu\.be\/|v\/|
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.