Hi Alex,

Unfortunately this is a know limitation of the append requests, and we are 
working to add that detail to the documentation. The core issue is that the 
append requests place data into existing cells, rather than create new 
cells. Because of this, two requests can target the same existing cells and 
overwrite each other.

There are a few workarounds:

1) Implement locking in your application to ensure that only one process is 
writing to the spreadsheet at a given moment.
2) Instead of using the appendCells request, send an insertDimension and 
updateCells request in a single batch. This will add a new row for the new 
data and write to it in one atomic unit.

Best,
- Eric

On Thursday, October 6, 2016 at 10:38:05 AM UTC-4, Alexander Shyronosov 
wrote:
>
> We are using Google Sheets API v4 for getting and appending rows in a 
> sheet. There is an issue when several requests for rows appending are sent 
> simultaneously, e.g. 4 concurrent requests. Sometimes such requests are 
> intersected and some of the appended rows are overwritten by another 
> requests. For instance if each request has only 1 row for append and 4 such 
> requests are sent at the same moment, only 3 rows are created. This issue 
> doesn't appear in case of sequential requests. Is it known issue? Is there 
> any workaround how we can achieve that rows are not overwritten by 
> concurrent append requests?
>
> For sending an append request we are using batch update request endpoint:
> POST 
> https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}:batchUpdate
>
> The body of batch update request has "appendCells" property with 
> appropriate append cells request data:
> 1. "sheetId": appropriate sheet ID;
> 2. "rows": only one row;
> 3. "fields": "*"
>
>
> Thanks,
> Alex
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google Spreadsheets API" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to