I’m currently doing exactly this with Zapier (free tier). Google form populates a sheet, new rows are the trigger. The key to the whole thing is the Zapier action “find or create record”. If the form submission is brand new (based on a search for the Google-assigned ID string) the fields populate to their mapped version in Airtable. If the row already exists and was updated, then the corresponding Airtable entry is updated instead of a new record being created.
As long as you don’t need instant sync via zapier (free tier fires every 15 minutes) you can do it all for free.
I do some additional stuff with the records in Airtable, additional fields that are changed for various reasons. So as a bonus, I use Airtable Importer to sync back to another google sheet, where you can use AwesomeTable to create all kinds of charts and interactive dashboards.