首页 > 解决方案 > 将超过 1000 行写入 Google 表格

问题描述

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

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

基于 Stackoverflow 中的 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)?

标签: c#google-sheets-api

解决方案


我已经设法找出答案。

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);

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

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);

推荐阅读