It definitely is possible, but requires use of the standard Airtable API from within the Scripting Block script.
Also, syncing is a tricky problem to solve. One-way syncing isn’t too bad - if you just want to update “Base 2” with whatever the current state is of “Base 1”, that can be done relatively easily by making a GET request to “Base 1” with the Airtable API, and matching up records from the GET request to records in “Base 2”, and then using the Scripting Block’s
updateRecordsAsync() method to update “Base 2” so that it looks like “Base 1”.
Two-way syncing is a whole different issue - now you have to move data both ways, resolve conflicts, and determine which Base’s data should win out. This does not lend itself to a short forum explanation :slightly_smiling_face:
I’m trying to do this in an app (to archive old data from one base into a separate one.)
I’d come to the same conclusion, that the only way to achieve it inside Airtable is to use the standard REST API. But I can’t see how to make that happen within a scripting app: there’s no airtable.js package available, and so I don’t see how I can get access to the client.
Do I have to make raw HTTPS calls as per the curl examples in the documentation instead?
The simple answer is yes, that is exactly what you have to do. An example would look like this.
let response = await fetch('https://api.airtable.com/v0/YOUR_APP_ID/YOUR_TABLE_NAME?api_key=YOUR_API_KEY'); console.log(await response.json());
At that point, you just need to look through the JSON response and figure out how you get the data out of the object structure.
Hope this helps.