将超过 1000 行写入 Google Sheet

Writing more than 1000 rows into Google Sheet

我必须将 1000 多行写入 Google sheet,因此我需要增加行数(我得到了 Google.Apis.Requests.RequestError 当我尝试写入 4640 行时)。

搜索 Whosebug 网站得到的信息告诉我我需要使用 UpdateSheetPropertiesRequestInsertDimensionRequest 并创建一个新的请求在同一个 Spreadsheets.BatchUpdate 调用中。

基于 Whosebug 中的 Python 示例,我设置了 InsertDimensionRequest 实例的属性并将它们包含在我现有的代码中(= Ian Preston 公开可用的 C# 代码).

代码如下所示:

public void AddCells(GoogleSheetParameters googleSheetParameters, List<GoogleSheetRow> rows)
        {
            var requests = new BatchUpdateSpreadsheetRequest { Requests = new List<Request>() }; //Existing code

            int sheetId = GetSheetId(_sheetsService, _spreadsheetId, googleSheetParameters.SheetName); //Existing code

            InsertDimensionRequest insertDimensionRequest = new InsertDimensionRequest(); //Added code
            
            insertDimensionRequest.Range.SheetId = sheetId; //Added code
            insertDimensionRequest.Range.Dimension = "ROWS"; //Added code
            insertDimensionRequest.Range.StartIndex = 999; //Added code
            insertDimensionRequest.Range.EndIndex = 6999; //Added code
            insertDimensionRequest.InheritFromBefore = false; //Added code
            
            var request = new Request { UpdateCells = new UpdateCellsRequest { Start = gc, Fields = "*" } };  //Existing code
            //some code here

            var request1 = new Request { ???????? }; //code to be added - how should the request look like?

            requests.Requests.Add(request);  //Existing code
            requests.Requests.Add(request1); //Added code
         
        }

但我不知道如何在 C# 中创建新请求。

我的问题是:如何创建这样的请求(在我的代码中命名为 request1)?

我已经找到答案了。

DimensionRange dr = new DimensionRange
            {
                SheetId = sheetId,
                Dimension = "ROWS",
                StartIndex = 999,
                EndIndex = 6999 // adding extra 6000 rows
            };

var request1 = new Request { InsertDimension = new InsertDimensionRequest { Range = dr, InheritFromBefore = false } };    

然后(请求的顺序很重要):

requests.Requests.Add(request1);
requests.Requests.Add(request);

编辑 01-06-2022: 可以从 GitHub 下载使用上述片段的完整代码 - 请参阅那里的 GoogleSheets 项目。

也可以使用userEnteredValue。这会清除 sheet 并且对我来说莫名其妙地将行数设置为未知值,但至少设置为 4640.

编辑 31-05-2022: 如果您对 userEnteredValue 的用法了解更多,请随时详细说明此事。

GridRange dr2 = new GridRange
            {
                SheetId = sheetId
            };

var request2 = new Request { UpdateCells = new UpdateCellsRequest { Range = dr2, Fields = "userEnteredValue" } };

然后(请求的顺序可能也很重要):

requests.Requests.Add(request2);
requests.Requests.Add(request);