如何在 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

valuesAPI 集合适用于 A1 范围,其中包括命名范围、sheet 名称、行号(从 1 开始)和列字母。 spreadsheets API 集合适用于 GridRangeGridCoordinateDimensionRange 等对象,所有这些对象都适用于 sheet ID 和 row/column 索引(基于 0)。

如果您想对指定范围内的值进行批量更新,您需要使用 values.batchUpdate API,而不是 spreadsheets.batchUpdate API。

C# 中的 API 应该是参考文档上信息的相当简单的映射,可能使用 SpreadsheetsResource.ValuesResource.BatchUpdateRequest.