如何用Google Apis.Sheets.v4的C#库为Google Sheets单元格加备注?
使用Google Sheets API v4的官方C#库添加单元格备注
当然可以通过Google官方的C#库实现单元格备注添加!我之前也卡在这一步,试过HTTP请求的方案但总觉得不够优雅,后来在Rafa Guillermos的建议下,终于用官方库搞定了,分享一下实现代码和注意点:
实现代码
public async void AddNote(string sheet, int column, int row, int sheetId, string noteMessage) { await Task.Delay(1); var requests = new List<Request>(); // 注意:单个单元格的GridRange,结束列和行必须+1,否则会抛出越界错误 var gridRange = new Google.Apis.Sheets.v4.Data.GridRange { EndColumnIndex = column + 1, StartColumnIndex = column, EndRowIndex = row + 1, StartRowIndex = row, SheetId = sheetId }; // 构建更新单元格的请求 var request = new Google.Apis.Sheets.v4.Data.Request(); request.UpdateCells = new Google.Apis.Sheets.v4.Data.UpdateCellsRequest(); request.UpdateCells.Range = gridRange; request.UpdateCells.Fields = "note"; // 指定只更新note字段 request.UpdateCells.Rows = new List<Google.Apis.Sheets.v4.Data.RowData>(); request.UpdateCells.Rows.Add(new Google.Apis.Sheets.v4.Data.RowData()); request.UpdateCells.Rows[0].Values = new List<Google.Apis.Sheets.v4.Data.CellData>(); request.UpdateCells.Rows[0].Values.Add(new Google.Apis.Sheets.v4.Data.CellData()); request.UpdateCells.Rows[0].Values[0].Note = noteMessage; requests.Add(request); var requestBody = new Google.Apis.Sheets.v4.Data.BatchUpdateSpreadsheetRequest(); requestBody.Requests = requests; // 获取已授权的Sheets服务实例(_authenticatorService是自定义的授权服务) var service = _authenticatorService.GetSheetsService(new[] { SheetsService.Scope.Spreadsheets} ); var batchRequest = service.Spreadsheets.BatchUpdate(requestBody, _spreadsheetId); batchRequest.Execute(); }
关键注意事项
- GridRange范围设置:必须将
EndColumnIndex和EndRowIndex设为起始索引+1,否则API会抛出"尝试写入边界外"的错误,这是很多人容易踩的坑。 - 字段精准指定:设置
Fields = "note"可以确保只更新单元格的备注字段,避免修改不必要的其他属性。 - 授权服务依赖:代码中的
_authenticatorService是自定义的授权服务类,负责提供完成OAuth2授权的SheetsService实例,需要确保你的授权流程正确,且拥有Spreadsheets权限。
内容的提问来源于stack exchange,提问作者Malte Schou-Jensen
相关产品推荐
相关产品推荐

