This article explains how to sync records from Google Sheets to Airtable. More precisely, it demonstrates how to use the One-way data synchronization pattern for a product data feed.
Here's an example of the sheet used in this article
1. Create a new automation
2. Search for the Google Sheets connector using the left menu
3. For performance reasons, we will retrieve data incrementally from the source as opposed to getting all data from the source on each run.
Select the Google Sheets connector and use the 'Search for blocks' input to search for the 'List New And Updated Rows Incrementally' block.
![Mihai_David_2-1629369973936.png Mihai_David_2-1629369973936.png](https://community.qlik.com/t5/image/serverpage/image-id/60354iBD89F2F31E4B90F3/image-size/large?v=v2&px=999)
4. Drag and drop the block into the automation and link it to the start block.
![Mihai_David_4-1629370471286.png Mihai_David_4-1629370471286.png](https://community.qlik.com/t5/image/serverpage/image-id/60356i05F5A188B2D915DC/image-size/large?v=v2&px=999)
4. Go to the "Inputs" tab of the block's menu and fill in the necessary fields.
![Mihai_David_1-1629373596014.png Mihai_David_1-1629373596014.png](https://community.qlik.com/t5/image/serverpage/image-id/60376iC3973BC8CA52E5D4/image-size/large?v=v2&px=999)
![Mihai_David_2-1629373628470.png Mihai_David_2-1629373628470.png](https://community.qlik.com/t5/image/serverpage/image-id/60377i9E11DD7EE3109021/image-size/large?v=v2&px=999)
5. Create the Airtable table. Make sure you add all required columns as the Airtable block will not add them automatically
![Mihai_David_2-1629372991197.png Mihai_David_2-1629372991197.png](https://community.qlik.com/t5/image/serverpage/image-id/60372i5A0BA6E22DF55A7C/image-size/large?v=v2&px=999)
6. Search for the 'Upsert Record' block in the 'Airtable' connector and place it inside the loop. Then fill in the required fields
![Mihai_David_1-1629372903540.png Mihai_David_1-1629372903540.png](https://community.qlik.com/t5/image/serverpage/image-id/60371i2419C5D73654ACDC/image-size/large?v=v2&px=999)
![Mihai_David_0-1629373366260.png Mihai_David_0-1629373366260.png](https://community.qlik.com/t5/image/serverpage/image-id/60373i67CCED4C9966D167/image-size/large?v=v2&px=999)
The 'Record Values' raw input looks like this:
{
"id": "{ $.GoogleSheetListNewAndUpdatedRowsIncrementally.item.row.id }",
"name": "{ $.GoogleSheetListNewAndUpdatedRowsIncrementally.item.row.name }",
"description": "{ $.GoogleSheetListNewAndUpdatedRowsIncrementally.item.row.description }",
"price": "{ $.GoogleSheetListNewAndUpdatedRowsIncrementally.item.row.price }",
"currency": "EUR",
"stock_quantity": "{ $.GoogleSheetListNewAndUpdatedRowsIncrementally.item.row.stock_quantity }"
}
7. Run the automation
![Mihai_David_0-1629372740355.png Mihai_David_0-1629372740355.png](https://community.qlik.com/t5/image/serverpage/image-id/60370i401C39FFD7CE3585/image-size/large?v=v2&px=999)