C#修改Google Sheets新增行高时类型不匹配问题求助
问题解决:Google Sheets API修改行高时类型不匹配
核心问题原因
BatchUpdateSpreadsheetRequest的Requests列表接收的是Request类型对象,而你直接添加了UpdateDimensionPropertiesRequest,两者类型不兼容——必须把UpdateDimensionPropertiesRequest包装到Request实例的对应属性中才能添加。
修正后的完整代码
// 将字符串列表转为对象列表(简化写法) var valueRange = new ValueRange { Values = new List<IList<object>> { columns.Cast<object>().ToList() } }; // 更新指定行的单元格内容 var appendRequest = service.Spreadsheets.Values.Update( valueRange, spreadsheetId, $"{sheetname}!A{rownumber}:Z{rownumber}" ); appendRequest.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED; var appendResponse = appendRequest.Execute(); // 修改行高为100像素 var batchUpdateRequest = new BatchUpdateSpreadsheetRequest(); // 1. 创建行维度属性更新请求 var updateDimRequest = new UpdateDimensionPropertiesRequest { Range = new DimensionRange { SheetId = sheetId, Dimension = "ROWS", StartIndex = rownumber - 1, // Google Sheets API索引从0开始,行号转索引需减1 EndIndex = rownumber // 左闭右开区间,EndIndex取行号本身 }, Properties = new DimensionProperties { PixelSize = 100 }, Fields = "pixelSize" }; // 2. 把UpdateDimensionPropertiesRequest包装到Request对象中 var request = new Request { UpdateDimensionProperties = updateDimRequest }; // 3. 添加到批量请求列表 batchUpdateRequest.Requests = new List<Request> { request }; // 执行批量更新 var batchResponse = service.Spreadsheets.BatchUpdate(batchUpdateRequest, spreadsheetId).Execute();
额外修正点
- 移除了
UpdateDimensionPropertiesRequest初始化时多余的右括号 - 简化了字符串列表转对象列表的代码(用
Cast<object>()替代手动循环) - 修正了
StartIndex和EndIndex的赋值:Google Sheets API的行索引从0开始,第N行对应的索引区间是[N-1, N)
内容的提问来源于stack exchange,提问作者erict
相关产品推荐
相关产品推荐

