如何使用C#在Google Sheets API v4中格式化标题行?

时间:2018-09-21 05:44:55

标签: c# google-sheets google-sheets-api google-api-dotnet-client

我想要以下输出:

但是我收到以下结果:

我遵循了有关此SO问题的说明:

How to Change color of range in google sheets api v4 in .net

但是此代码在工作表的所有行和列上都是粗体。

如何解决此问题? 我的代码是:

var userEnteredFormat = new CellFormat()
{
    TextFormat = new TextFormat()
    {
        Bold = true,
        FontSize = 12
    }
};

BatchUpdateSpreadsheetRequest batchupdateCell = new BatchUpdateSpreadsheetRequest();

//create the update request for cells from the first row
var updateCellsRequest = new Request()
{
    RepeatCell = new RepeatCellRequest()
    {
        Range = new GridRange()
        {
            SheetId = sheetId,
            StartColumnIndex = 0,
            StartRowIndex = 0,
            EndColumnIndex = 28,
            EndRowIndex = 1
        },
        Cell = new CellData()
        {
            UserEnteredFormat = userEnteredFormat
        },
        Fields = "UserEnteredFormat(TextFormat)"
    }
};

batchupdateCell.Requests = new List<Request>();
batchupdateCell.Requests.Add(updateCellsRequest);
SpreadsheetsResource.BatchUpdateRequest bur = service.Spreadsheets.BatchUpdate(batchupdateCell, SheetId);
BatchUpdateSpreadsheetResponse responseUpdate3 = bur.Execute();

1 个答案:

答案 0 :(得分:0)

使用Google APIs Explorer对我来说效果很好,它应该在JSON POST正文和C#/ Python / Java / ...类型的资源之间转换几乎1:1。

POST https://sheets.googleapis.com/v4/spreadsheets/YOUR_SPREADSHEET_ID_HERE:batchUpdate?
     fields=updatedSpreadsheet(sheets(data%2FrowData%2Fvalues%2FuserEnteredFormat%2Cproperties(sheetId%2Ctitle)))
{
    "requests": [
        {
            "repeatCell": {
                "range": {
                    "sheetId": YOUR_SHEET_ID_HERE,
                    "endRowIndex": 1
                },
                "fields": "userEnteredFormat/textFormat",
                "cell": {
                    "userEnteredFormat": {
                        "textFormat": {
                            "bold": true,
                            "fontSize": 12
                        }
                    }
                }
            }
        }
    ],
    "responseRanges": [
        "1:2"
    ],
    "includeSpreadsheetInResponse": true
}

Demo link

我的请求中的GridRange仅标识sheetId和结尾索引,因此它以给定工作表中的所有列为目标,并且仅格式化第一行。 (根据API规范,除非起始索引为1,否则终止索引2将格式化第一行和第二行)。

出于验证目的,演示链接被配置为请求Sheets API向您发送回每个工作表的前两行的TextFormat,以及titlesheetId SheetProperties。请注意,如果第二行未应用任何用户格式,则不会发送任何数据。