Note, that the spreadsheet.values.append method has a parameter called insertDataOption that allows you to specify that new rows should be inserted, which also works around the concurrency issues. I'll see if we can add that same option to the appendCells request.
- Eric On Thursday, October 6, 2016 at 1:40:10 PM UTC-4, Eric Koleda wrote: > > 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.
