如何在 C# Google 表格 API 中更新多个命名范围?
how do you update multiple NamedRanges via C# GoogleSheets API?
我可以使用 Update() 更新单个 NamedRange,使用 BatchUpdate 更新多个 GridCoordinate 范围,但我不知道如何在 BatchUpdate 中更新 NamedRanges。这是怎么做到的?
我可以这样做的单个 NamedRange 更新:
ValueRange vr = new ValueRange();
vr.Range = "aRange";
var l1 = new List<object>();
l1.Add("Here");
IList<IList<object>> l2 = new List<IList<object>>();
l2.Add(l1);
vr.Values = l2;
var rqe2 = service.Spreadsheets.Values.Update(vr, spreadsheetId, "aRange");
rqe2.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;
rqe2.Execute();
和通过 BatchUpdate 的 GridCoordinate 我可以这样做:
BatchUpdateSpreadsheetRequest busr = new BatchUpdateSpreadsheetRequest();
busr.Requests = new List<Request>();
Request r = new Request();
busr.Requests.Add(r);
r.UpdateCells = new UpdateCellsRequest();
var gc = new GridCoordinate();
gc.ColumnIndex = 0;
gc.RowIndex = 5;
gc.SheetId = 0;
r.UpdateCells.Start = gc;
r.UpdateCells.Fields = "*";
r.UpdateCells.Rows = new List<RowData>();
var rd = new RowData();
r.UpdateCells.Rows.Add(rd);
rd.Values = new List<CellData>();
var cd = new CellData();
cd.UserEnteredValue = new ExtendedValue();
cd.UserEnteredValue.StringValue = "UserEnteredValue";
rd.Values.Add(cd);
SpreadsheetsResource.BatchUpdateRequest bur = service.Spreadsheets.BatchUpdate(busr, spreadsheetId);
bur.Execute();
您正在使用上述两种不同的更新,values.update & spreadsheets.batchUpdate。
values
API 集合适用于 A1 范围,其中包括命名范围、sheet 名称、行号(从 1 开始)和列字母。 spreadsheets
API 集合适用于 GridRange
、GridCoordinate
、DimensionRange
等对象,所有这些对象都适用于 sheet ID 和 row/column 索引(基于 0)。
如果您想对指定范围内的值进行批量更新,您需要使用 values.batchUpdate API,而不是 spreadsheets.batchUpdate
API。
C# 中的 API 应该是参考文档上信息的相当简单的映射,可能使用 SpreadsheetsResource.ValuesResource.BatchUpdateRequest
.
我可以使用 Update() 更新单个 NamedRange,使用 BatchUpdate 更新多个 GridCoordinate 范围,但我不知道如何在 BatchUpdate 中更新 NamedRanges。这是怎么做到的?
我可以这样做的单个 NamedRange 更新:
ValueRange vr = new ValueRange();
vr.Range = "aRange";
var l1 = new List<object>();
l1.Add("Here");
IList<IList<object>> l2 = new List<IList<object>>();
l2.Add(l1);
vr.Values = l2;
var rqe2 = service.Spreadsheets.Values.Update(vr, spreadsheetId, "aRange");
rqe2.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;
rqe2.Execute();
和通过 BatchUpdate 的 GridCoordinate 我可以这样做:
BatchUpdateSpreadsheetRequest busr = new BatchUpdateSpreadsheetRequest();
busr.Requests = new List<Request>();
Request r = new Request();
busr.Requests.Add(r);
r.UpdateCells = new UpdateCellsRequest();
var gc = new GridCoordinate();
gc.ColumnIndex = 0;
gc.RowIndex = 5;
gc.SheetId = 0;
r.UpdateCells.Start = gc;
r.UpdateCells.Fields = "*";
r.UpdateCells.Rows = new List<RowData>();
var rd = new RowData();
r.UpdateCells.Rows.Add(rd);
rd.Values = new List<CellData>();
var cd = new CellData();
cd.UserEnteredValue = new ExtendedValue();
cd.UserEnteredValue.StringValue = "UserEnteredValue";
rd.Values.Add(cd);
SpreadsheetsResource.BatchUpdateRequest bur = service.Spreadsheets.BatchUpdate(busr, spreadsheetId);
bur.Execute();
您正在使用上述两种不同的更新,values.update & spreadsheets.batchUpdate。
values
API 集合适用于 A1 范围,其中包括命名范围、sheet 名称、行号(从 1 开始)和列字母。 spreadsheets
API 集合适用于 GridRange
、GridCoordinate
、DimensionRange
等对象,所有这些对象都适用于 sheet ID 和 row/column 索引(基于 0)。
如果您想对指定范围内的值进行批量更新,您需要使用 values.batchUpdate API,而不是 spreadsheets.batchUpdate
API。
C# 中的 API 应该是参考文档上信息的相当简单的映射,可能使用 SpreadsheetsResource.ValuesResource.BatchUpdateRequest
.