Need development and API help? Ask your questions here!
Recently active
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}); }
Hi, I am definitely not a coder, so hoping I can find some help here. My goal is to search for specific text somewhere within a field, and if it’s found, then replace the entire field with a specific string. Specifically, if it finds “UPS” or “FedEx” anywhere within the field, replace the entire field with “Shipping & Delivery”. I started with the Find and Replace script that I installed from the Marketplace. This script replaces the text you are searching for with alternative text within the string, So, if my input field has “UPS Store #12345”, it will produce “Shipping & Delivery Store 12345”, rather than setting the field to “Shipping & Delivery”. I tried modifying this line: let newValue = originalValue.replace(findText, replaceText); to somehow replace the entire field but I just can’t get it to work. Any help would be appreciated!
Not sure if I’m missing something obvious, but was wondering why is Airscript.dev listed with the anchor of “airscript tutorials” in the scripting app (Documentation tab, item #4 of “Other Resources”). The site itself says it is neither endorsed nor owned by Airtable. A forum search yields two topics from the apparent owner of the domain, both of which are self-promotions and don’t explain the link. I understand the half a dozen or so marketplace scripts come from third parties but is the scripting app itself not owned by Airtable? Just to be clear, the site is a pretty decent resource but I’m amazed a company with a ten-figure valuation like Airtable would promote anyone for free. And that particular link has some pretty insane promotional value in terms of domain authority juice from Google.
:wave: Hey all, Stephen from the scripting block team here. Today we’re releasing a bunch of updates to the scripting block, based on all of your helpful feedback from the beta. To get access to the latest changes, you’ll need to reload your browser or Airtable desktop app. Note that some of these are breaking changes and you will need to update your existing scripts accordingly — sorry for the inconvenience; these should be the last breaking changes before we launch the block more broadly. Breaking: input.text() and input.buttons() have been renamed to input.textAsync() and input.buttonsAsync() . This means you need to prefix them with the await keyword. Breaking: output.text() is now plain-text only, but accepts values other than just strings. Use output.markdown() if you want to output Markdown. Breaking: all methods will validate their inputs — if you pass input to Airtable functions that don’t match the documented values, your script will now error. Custom script names have
I am looking to script automation that sends a task list to people when a new employee is hired. I am not finding anything on here that is similar. Any suggestions? More Details When an agent is added to the directory, they automatically filter over to my orientation list, once I put them in the “first engagement” stage I want an email sent to 4/5 different people with their specific task. That table is already built out, I will be adding a task list script to create a checklist, but I really want an email sent.
I have a script I want to run to speed up data entry but I can’t figure out how to run it from a mobile device. The button support is too limited on the mobile app. Has anyone been able to run scripts on a mobile device?
Hello, I’m trying to init a custom block for my database but i get this following error whenever I launch the command line block init from any github repo. Initializing block using https://github.com/xavdid/airtable-grouped-chart template ❌ Something failed! Cleaning up... ❌ Error: a.isDirectory is not a function Do you have any idea how i can fix it please ? Thanks in advance for your help BR
Hi everyone, I’m using the Airtable API to get some data and if I send in the same query parameter the options “offset” and “fields”, the “fields” will be ignored. Example: GET https://api.airtable.com/v0/app9T56uFsgbBnwd9/Table%201?fields[]=Name → result ok, only field “name” is in the response GET https://api.airtable.com/v0/app9T56uFsgbBnwd9/Table%201?offset=itrRTMLhF0a3iOmRS%2FrecWISmZwmjg0AeYR → result ok GET https://api.airtable.com/v0/app9T56uFsgbBnwd9/Table%201?offset=itr4KjTfwwdlSSBm4%2FrecWISmZwmjg0AeYR&fields[]=Name → failed! The filter “fields” was ignored Does someone know the reason for this behavior?
Title says the root of the problem. I’m thinking this is because CORS, but I’ve had no luck with fetch or the newly introduced remoteFetchAsync. Finding the same thing with two different APIs: Creating a customer in Stripe (this one works in automation) Creating clients in Toggl The more frustrating issue I’m running into is that there’s no error message or anything I can find in the stack using debugger; - the script exists and there’s simply no output. Could this be because Airtable scripts don’t support “redirect: follow”? If so, is the best workaround to dump all the logic into a cloud function like Google Apps Scripts, Netlify Functions, Code by Zapier, etc?
I’ve written the following script code to update the linked field for a given record in a list, but the script view is giving me an error. Script: jonathan_conrad: I’ve written the following script code to update the linked field for a given record in a list, but the script view is giving me an error. Script: let table = base.getTable(“Order Line Items”); let inputConfig = input.config(); for (let record of inputConfig.Records) { await table.updateRecordAsync(record, { “Custom Location”: inputConfig.customLocationID[0] }); } Error: The expected type comes from property ‘Custom Location’ which is declared here on type ‘{ “Add-on Bronze Medals”?: string; fld13Q43cUf7VfuBG?: string; Location?: string; fld2SoBeNE8RPE6bX?: string; “95 Paracord”?: string; fld2cl7RGT9zRifPW?: string; “Custom Notes”?: any; fld3Pev0cukPjrrRM?: any; … 79 more …; fldzp8aQGfuWXm1aT?: { …; }; }’ Type ‘string’ is not assignable to type ‘{ id: string; }’.(2322)
Hi there. We are looking to import order data into Airtable with something similar to the following CSV functionality except through the API: Airtable Support CSV import app With the CSV import app, you can add new records to an existing table in your base - or merge data with existing records - directly from a CSV file. The CSV import app has a 25,000 row limit. Airta... We would like to trigger automations only when there are a) new rows or if b) certain fields for an existing row are updated (eg. order cancelled field: null → ‘cancelled’). Is there anyway to accomplish something like this through the api? Any other suggestions are greatly welcomed :). Thanks! IR
Hi I am creating an extended project planning tool. So i create an graph for the project in which the workload per week in presented. For this I use data from a couple of tables (team, standaard uren (standard hours), Init en activiteiten (activities)) In order to create the graphical load per week I need to create subfases per main fase (hoofdfase) What i am trying to do is retrieve the fase + number of weeks in order to write these in the table activiteiten and also teammember from teamleden. I managed to get to work through test2 … But now stuck. Anybody willing to help? or maybe if you need more info, please let me know. //let let fases = [{ fase: "Voorbereiding", startDate: startdatumV, endDate: endDateV, weeken: duurV, id: records[0] }, { fase: "Campagne", startDate: startDateC, endDate: endDateC, weeken: duurC, id: records[1] }, { fase: "Nazorg", startDate: startDateN, endDate: endDateN, weeken: duurN, id: records[2] }]; // await fases.forEach(async (f) => {
Hey everyone, im kinda new in google sheets and google apps script. First i got a code where a sheet is hidden, if the checkbox in a specific cell is checked. function onEdit(a) { var range = a.range; if (range.getA1Notation() == "B13") { var Agenda = a.source.getSheetByName("Agenda"); if (range.isChecked()) { Agenda.showSheet(); } else { Agenda.hideSheet(); } } } Now i got the problem that i have multiple sheets. But this code shall only work in one of the sheets. So i tried two different things: if (activeSheet.getName() !== "Allgemeine Informationen") return; and if (activeSheet.getName() == "Allgemeine Informationen") { ... } Both doesn’t work properly. I also tried to get the value of the function by writing the value of “activeSheet.getName()” in a cell but the cell kept empty. So Long Text Short Question: How can i put an if function that makes the code only executing when the active sheet has the name “Allgemeine Informationen”? Friendly Rega
Hi All, Looking for some guidance as I’m well outside my basic scripting depth. Use case: I have a table of applicants each linked to a group. The groups are listed out in another table and then all the group’s applicants linked in the “group members” field. Each applicant has a field that I would like to compile into a list and email or display with markdown formatting. The goal is that I have a button on the Groups table that allows a user to “generate list” which outputs or emails them the formatted list of the 5-6 group members that can then be copied into an email. Where I’m stuck is I am able to get as far as building an array of the ids for the linked applicants, but don’t know how to then use that array to retrieve the individual field values for each applicant from the applicants table. Script so far is below. Also thanks to those whose scripts I already borrowed/mutilated to get this far. This script is born because the field I’m trying to pull out is a custom hyperlink and w
Hello everyone! I don’t know if I’m missing something, but I would like to know how to get the information of the record that spawned a “When record created/updated” so far for the created I have to retrieve the information by quering the table and getting the latest input(Sorting the table). However it seems to me like inside if the script of the trigger there should be somewhere with out having to do this. Im starting to use this tool so any help would be appreciated! Thanks in advance and sorry if i made a duplicate or if i miss this in the docs!
Hi, I’ve a simple code to move checked record from table to other table: let foraccept = base.getTable(“For Accept”); let plugins = base.getTable(“Plugins”); let result = await foraccept.selectRecordsAsync(); for (let record of result.records) { if (record.getCellValue(“Accepted”)) { await plugins.createRecordsAsync([ { fields: { ‘Name’: record.getCellValue(“Name”), ‘Website’: record.getCellValue(“Website”), ‘Type’: record.getCellValue(“Type”), }, } ]); await foraccept.deleteRecordAsync(record.id); } } My problem is: How i get values from single or multiple select? (Field “Type”) → ‘Type’: record.getCellValue(“Type”). It is possible?
Hi, sorry for the long post. I’m new to Airtable, but think I’m getting the hang of Airtable’s assumptions: hide the database keys and use the first column of the table as a psuedo-primary key for the UI. We are contemplating using airtable as a readonly front-end to our existing database, which is not very UX friendly and is increasingly perceived as a barrier. I’m using a script that pulls my data into an airtable base with two tables. I can setup a Link field that creates the links as the records are pulled in. Now, lets say I’m pulling in 2 tables from an sql database, Contacts and Homework. If I’m creating records in airtable by hand, its ok if I have two different contacts with the same name, because airtable is using its internal UUID, but if I pull contacts with the same name via script, the linking breaks. If I import the primary and foreign keys into Airtable then I can use those to link the tables, but it seems like I lose some Airtabley goodness. For example, if I make th
Hopefully someone can help. I’m using the airtable API to build a custom app. I want to have a record picker which displays a selection of records, upon selecting the record the resulting report (data based on selection) is rendered. I’ve been playing around and I’m fairly certain “SelectSynced” is going to be my friend. However I’m struggling with a lack of worked code examples (they mostly show table or view selections). Namely; I would like to a) render a < select> populated with data from a record query b) once user has made a selection use the select value to render data from the chosen record Link to api ref for react component: Airtable Blocks SDK //WIP - hard -coded values for testing import { useRecords, useBase, useGlobalConfig, initializeBlock, Select, SelectSynced, } from '@airtable/blocks/ui'; import React, {useState} from 'react'; const GlobalConfigKeys = { selectedOption: "Joseph Lee" }; //coachnames const options = [ { value: "Pear", label: "Pear" }, {
We have the limit of 50 000 automation runs in our plan. Does this limit includes API calls?
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.