c# - 将超过 1000 行写入 Google 表格
问题描述
我必须在 Google 工作表中写入 1000 多行,因此我需要增加行数(当我尝试写入 4640 行时,我得到了Google.Apis.Requests.RequestError )。
搜索 Stackoverflow 站点得到的信息告诉我,我需要使用UpdateSheetPropertiesRequest或InsertDimensionRequest并创建一个可以在同一个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)?
解决方案
我已经设法找出答案。
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);
推荐阅读
- excel - 将工作表转换为 PDF 缺少图像
- batch-file - 修改 CSV 文件以在列中添加数字字符
- powershell - MS-Teams ,尝试将图像(存在于本地计算机上)发送到 Teams 频道 webhook url
- c - C 程序:数组示例
- scikit-learn - TimeSeries NLP:将 ARIMA 与 CountVectorizer 结合使用
- python - tkinter 文件对话框打开 2 个窗口
- push-notification - 使用 Laravel 向 android 发送推送通知
- c++ - LZW 解压
- macos - Safari中的jupyterlab循环
- java - 为什么我的交易意外回滚?