Need development and API help? Ask your questions here!
Recently active
We need the ability to duplicate a record on our mobile apps so we can quickly add, then edit, a brand new record that’s strongly similar to the first, saving us excessive duplicative entry work in records with many fields. It’s easy to do in the desktop application, but the “duplicate & edit” function would be used primarily “in the field” and “on the move.”
The Google Drive integration…will workspaces and bases become searchable in Google Drive? So if I enable Google Drive integration and I have some text in a record in some base, if I use the Google Drive search function to search for this text will it find and return the relevant workspace/base as a search result?
Hey all. I’m tasked with doing some automation of a few processes. As part of this task, I need to create several records in an AirTable base. I’m using AirtablJS, with typescript typings from DefinitelyTyped. I was wondering how I can create multiple records with one request. I saw on the API docs that I can just pass an array of field data to the base(“tableName”).create() function to do this. But, when I try it on my codebase, Node complains that create() has no such overload that takes an array of records. Any advice on doing this?
Hi guys, Completely new to Airtable and have been following the https://github.com/Sybit-Education/airtable.java guide to integrate Airtable with my java project. I understand this is a new API client and is probably not fully supported yet. I think I have everything set up correctly but I seem to get the following error when making any requests to the database: Exception in thread “main” com.sybit.airtable.exception.AirtableException: Could not find what you are looking for (NOT_FOUND) [Http code 404] I’m certain that my API key, base name and table name are all correct. Here is the code used in my project to connect to Airtable: import com.sybit.airtable.Airtable; import com.sybit.airtable.Base; import com.sybit.airtable.Table; import com.sybit.airtable.exception.AirtableException; import org.apache.http.client.HttpResponseException; import java.lang.reflect.InvocationTargetException; import java.util.List; public class DatabaseService { private static final String AIRTABLE_API
I’m using the curl API to pull json data from a table linking to records in a secondary table. I have a working function that pulls down and parses both tables. It then uses the record ID listed in the main table and plugs in the corresponding data in the secondary table. It works fine. But it would be very helpful to perform this without coding the name of the secondary table. Is there any way to retrieve the name of the table source of the linked record without knowing it ahead of time? Or retrieve the record with just the ID and not the table name?
I have a column “Win or Loss” that is a 0 or 1. It is the result of a formula in the Table. I would like to filter a result set to a certain number of rows in that table, which is working, and then sum the “Win or Loss” column. I figure this can be done with a reduce function. In this function which I call for each player, the goal is to calculate how many wins they have: function getPlayerStats(player){ output.text(player); let myGames = query.records.filter(record=>record.getCellValueAsString("Player")==player) output.inspect(myGames); let total_games=output.text(myGames.length); let total_wins = myGames.reduce((total,record)=>total + record.getCellValue("Win or Loss")); output.text(total_games); output.text(total_wins); } The output for total_wins ends up being something like this: [object Object]011 when it really should be 3 - it is concatenating the 1s but not summing them, and missing the first one for some reason. I am new to Javascript and
When I retrieve the content of a rich text enabled long text field through the API, only “bold” formatting works. Strikethrough and Italic are retrieved with a whitespace before the markdown symbol and therefore are not parsed correctly. Example: Is retrieved like this: You can see how 50 años posteriores shows up as _ 50 años posteriores_ instead of underscore50 años posterioresunderscore without spaces between the underscores and the thing I want to make italic. Has anyone experienced this? Is there a way to fix it?
I have a formula that calculates the age of actors, as pictured below: The problem I have is that I forgot how to integrate the field AGE OF DEATH for deceased actors. Any suggestions?
I have the following code: let table = base.getTable("Volunteers") let view = table.getView("Grid view") let currentTableDat = await view.selectRecordsAsync({ fields:["Submitter Slack Email"] }); console.log(currentTableDat) No matter how I pass in the fields parameter, the output in the log block is always just the first column ( a timestamp). I’ve tried not passing in any option, passing in the field ID, etc. The query totally ignores any of the parameters. The table is full of data, and table.fields shows the other columns. Any help?
Hi! Need some clues to figure this out… We need to develop a script that updates our sendgrid contact fields through API (last_order, etc) when a record changes on airtable. Anyone know where to begin or have similar code? thank you!
Hi there, i’m looking a way to export a table in csv. that’s pretty easy The trouble is that certains field (adresses for example) contains comma. i wonder if there is wildcard or regular expression in the scripting block. i aint found it in the docs thanks !
Hello! I am new to Airtable and scripting. I have a list of speakers which is populated from a speaker intake form and I have a list of dates/times (every Thursday at Noon). In the Scheduled table I manually assign a Speaker to a date. When I do this, I want to automatically create a new record in the Creative Log table, so our designer knows to create new graphics for that episode. I also want the due date to be set 2 weeks before scheduled date. This is what I have so far and need help. Thank you! `// pick tables from your base here let tasks = base.getTable(‘Creative Log’); let projects = base.getTable(‘Speakers’); let view = table.getView(“Scheduled Speakers”); output.inspect(view); // prompt the user to pick a template for our project output.markdown(’New Episode’); let name = await input.textAsync(‘Creative Log’); // create the project - change the field name to one in your base let projectId = await projects.createRecordAsync({ ‘Episode Cards’: name, }); // collaborator let col
Hello! My team uses airtable for our task tracking. We get new clients/shows all the time and many of them start off with the same tasks. I used one of the examples to help get me started on some basics! I would like to add another line under each field that allows me to assign a member of my team to a certain task. Does anyone know how to do this and/or if this is possible? This is what I have so far… Thanks so much for your feedback on this! `// pick tables from your base here let tasks = base.getTable(‘Task’); let projects = base.getTable(‘Performances’); // prompt the user to pick a template for our project output.markdown(’# New Show’); let name = await input.textAsync(‘Task’); // create the project - change the field name to one in your base let projectId = await projects.createRecordAsync({ ‘Performance’: name, }); // create the tasks - change the field names to ones from your base. // the [{id: projectId}] links the newly created records back to our project await tasks.createRe
I am building a scripting block to create some custom imports. For each record I output a log note on the action for that record. When I run the block, I see the log on the right hand side. Whats the best way to archive that log for future purposes, and is it possible to send that log out to the sessionUser via email or notification attachment?
Hello all! I have been losing my mind for 4 hours on this ‘simple’ task I am trying to implement in my base. I want to automatically update several fields (example : set Phase to ‘Initiation’) when a new record is created. I am able to update all required fields with Zapier. My problem is I am unable to use the ‘Find record’ feature to update the last entry. It would be easy to fix if I was able to simply ‘Find record’ when ‘Field x is empty’ or ‘Find record’ when ‘Auto update for Zapier… = Created’… I don’t understand why I keep getting an error on Zapier… this field exists with only 1 entry set to ‘Created’… and this is the entry I want to update.
Hello, We are dropping support for older versions of the Blocks SDK. After May 29, 2020, blocks will need to use SDK version 0.0.40 or greater in order to run. Here are the breaking changes from older SDK versions: 0.0.31: renamed globalConfig APIs, removed models.generateGuid. 0.0.32: removed localStorage and sessionStorage wrappers. 0.0.33: settingsButton.isVisible is no longer settable. 0.0.34: fieldTypes.LOOKUP renamed to fieldTypes.MULTIPLE_LOOKUP_VALUES. 0.0.35: Toggle renamed to Switch, theme removed from Button and Switch, and Flow type definitions removed. 0.0.41: BREAKING: useWatchable will now throw an error if the second argument keys is undefined. 0.0.42: Field type and view type enums are now exported from '@airtable/blocks/models' as FieldType and ViewType (previously fieldTypes and viewTypes). The full list of changes is available here. To upgrade: Edit the version of the @airtable/blocks package in your package.json file to be at least 0.0.40. Update the inst
How do I go about executing some code in response to events like when a new record is added? Is there like an “on insert” event I can attach a function to? If not, I’d there a work around for this? Basically, my task is to perform some operations whenever a record is added to a table. Thanks.
The RecordQueryResultOpts object supports a property named fields which is an array of fields that should be retrieved. If any of the array’s elements are falsey values, they are silently ignored. While this behavior is explicitly documented, I’m not sure it’s desirable. I recently refactored a block to allow all fields to be configured by the end user. This involved generalizing a call to selectRecords: -const queryResult = consumersTable.selectRecords({fields: ['Chapter']}); +const queryResult = consumersTable.selectRecords({ + fields: [consumerFields.region] +}); Code like this is prone to error because the value of the fields elements is abstracted away. Because the API silently tolerates mistakes (e.g. a typo like consumerFields.ragion), the effect isn’t perceptable until some subsequent area of the application logic. It’s not clear when block authors would benefit from the ability to specify values like undefined, so it may be better for the API to produce a synchronous error f
I am extracting a database of children’s books via Airtable API. This is my code so far(hiding my API KEY). It renders every book, but in a random order. I want to sort them by year. I am trying to follow the documentation from Airtable, which demonstrates the code to sort by multiple fields. I don’t really know where to place this code in my original code, and how to adapt it. Thanks for your help! import Hero from '../components/Hero'; class News extends Component { constructor(props) { super(props); this.state = { books: [], }; } componentDidMount() { fetch('https://api.airtable.com/v0/appYI3FvXw9Isfvj7/Favorites?api_key=API_KEY') .then((resp) => resp.json()) .then(data => { this.setState({ books: data.records }); }).catch(err => { // Error :( }); } render() { return ( <><Hero title="Children's Books"/> <div className="container mt-5"> <div className="row">
Dates are not coming in order when I’m loading on my website. - Here’s my code. Please help! I’ve been trying to figure out the sort for hours.
How do I loop through an array that is a set of (Product) RECORD_IDs; creating a record in the ‘Order Items’ table forEach Product, and also linking to the related order? For example, Brutus the Buckeye has the ‘CertainTeed - Highland Slate’ product package applied to his Order. I am having trouble wrapping my head around creating records in the ‘Order Items’ table. This was somewhat inspired from the record template example. This would allow for very common/repetitive list of pre-determined “packages” to be automatically applied as ‘Order Items’ for ‘Orders’. // pick order let order_table = base.getTable("Orders"); let order = await input.recordAsync('Pick an order', order_table) if (order) { output.text(`You picked '${order.getCellValueAsString("Order Name")}'`) } // pick a package(template)to apply to an order let product_package_table = base.getTable("Product Packages") let packagE = await input.recordAsync('Pick a product package', product_package_table) if (packagE) {
I am getting a 422 error code when I try to update a record via PATCH method. Specifically, the Airtable > Update a record event performs the folloiwng HTTP request: curl -X PATCH ‘https://api.airtable.com/v0/APPXXXXXX/Clients/RECXXXXXX’ -H ‘user-agent: Integromat/production’ -H ‘authorization: ***’ -H ‘content-type: application/json’ -d ‘{“fields”:{“Status”:“Lead - New”,“Initial Call Date”:“2020-04-16”,“Post Call Followup”:“None”,“Opportunity Followup”:“None”,“Post Project Followup”:“None”},“typecast”:false}’ for which the module received the following response: Status code: 422 Headers: { “access-control-allow-headers”: “authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with”, “access-control-allow-methods”: “DELETE,GET,OPTIONS,PATCH,POST,PUT”, “access-control-allow-origin”: “*”, “content-type”: “application/json; charset=utf-8”, “date”: “Thu, 23 Apr 2020 08:24:37 GMT”, “etag”: “W/“52-ooYmp4xonjkntQ21csI0
Is there a way to filterByFormula with an “IN” type of function. I.e. only return rows where the state field value is in the list [“OR”, “CA”, “FL”] ?
Hi. Is there any way, programmatically or by some setting (either on block or on the dashboard) to change the height of the block within the dashboard? No matter how many blocks are displayed in the dashboard, each of them seams to be 304px tall (including its heading). So even if there’s just one block, there’s a lot of unused whitespace while at the same time the block would be able to display more data. Our custom block displays a lot of content within an iframe, it expands the iframe to occupy as much space as available. But since the height of the block is fixed, it’s rather limited (read “very small”). I know the user can switch the block to the fullscreen, but that doesn’t help as that covers the data in the table, so when the user wants the block to react to cursor change (which is the coolest think and the only reason to use the block in our case), they need to exit the fullscreen, select another record in the table and then either scroll within the block or enter the full scr
I am not new to coding, but I am brand new to the scripting block, and I did a few searches and saw many unanswered topics, and several that didn’t quite fit in to my specific scope. I want to schedule out stories that run in newsletters, and be able to create all the records with user input. Say the following statement is made: “I want 4 stories to run in June, one every Friday, in ABC Newsletter.” Or maybe even: “I want a story to run every Tuesday in GHI Newsletter for the rest of the year.” Or MAYBE even: “I want a story to run every Monday AND Wednesday (2 per week) in the month of August.” I’m not looking to enter the title for each story, just a template title I can enter that is applied to all the records. But where I see the REAL magic is being able to accept user input of the days of the week and the month (or months) (maybe with checkboxes?), and somehow resolving the dates and the number of records to create based on what is checked. For example, if I want Fridays in May 20
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.