You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#使用Google SheetsService时如何正确获取SheetID

解决方案

你可以通过拉取电子表格元数据的方式动态获取对应工作表的ID,无需硬编码:

1. 新增获取工作表ID的方法

/// <summary>
/// 获取电子表格中第一个工作表的SheetID
/// </summary>
/// <param name="spreadsheetId">电子表格ID</param>
/// <returns>工作表ID</returns>
public int GetFirstWorksheetId(string spreadsheetId)
{
    var getSpreadsheetRequest = serviceSheet.Spreadsheets.Get(spreadsheetId);
    // 指定仅返回工作表ID相关字段,减少请求开销
    getSpreadsheetRequest.Fields = "sheets.properties.sheetId";
    var spreadsheet = getSpreadsheetRequest.Execute();
    // 直接取第一个工作表的ID
    return spreadsheet.Sheets.First().Properties.SheetId.Value;
}

如果需要根据工作表名称筛选,可以使用如下逻辑:

public int GetWorksheetIdByName(string spreadsheetId, string sheetName)
{
    var getSpreadsheetRequest = serviceSheet.Spreadsheets.Get(spreadsheetId);
    getSpreadsheetRequest.Fields = "sheets.properties(sheetId,title)";
    var spreadsheet = getSpreadsheetRequest.Execute();
    return spreadsheet.Sheets
        .First(s => s.Properties.Title == sheetName)
        .Properties.SheetId.Value;
}

2. 修改原有删除列方法

将硬编码的SheetId = 0替换为上述方法返回的ID即可:

public void DeleteColumns(string spreadsheetId, int start, int end)
{
    // 动态获取第一个工作表ID
    int sheetId = GetFirstWorksheetId(spreadsheetId);
    
    Request requestBody = new Request()
    {
        DeleteDimension = new DeleteDimensionRequest()
        {
            Range = new DimensionRange()
            {
                SheetId = sheetId,
                Dimension = "COLUMNS",
                StartIndex = start,
                EndIndex = end
            }
        }
    };

    List<Request> requestContainer = new List<Request>();
    requestContainer.Add(requestBody);

    BatchUpdateSpreadsheetRequest deleteRequest = new BatchUpdateSpreadsheetRequest();
    deleteRequest.Requests = requestContainer;

    SpreadsheetsResource.BatchUpdateRequest deletion = new SpreadsheetsResource.BatchUpdateRequest(serviceSheet, deleteRequest, spreadsheetId);
    deletion.Execute();
}

注意事项

  • 可以根据业务场景选择按序号或者按工作表名称获取ID,按名称获取的兼容性更强,不会因为工作表顺序调整导致功能异常
  • 建议对获取工作表的逻辑添加异常捕获,避免电子表格无工作表、指定名称的工作表不存在等场景下抛出未处理的异常

内容的提问来源于stack exchange,提问作者Kirill Lachaev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 21:06:03