【问题标题】:Google Sheets API v4: Delete row in C#Google Sheets API v4:在 C# 中删除行
【发布时间】:2020-06-03 12:27:20
【问题描述】:

我正在尝试使用 C# 中的 Google Sheets API 删除一行,但我无法让它工作。获取和更新行按预期工作。

这是我的代码(灵感来自 C# Google Sheets API - Delete RowJava documentation):

var request = new Request
{
    DeleteDimension = new DeleteDimensionRequest
    {
        Range = new DimensionRange
        {
            SheetId = 0,
            Dimension = "ROWS",
            StartIndex = 21,
            EndIndex = 21
        }
    }
};

var deleteRequest = new BatchUpdateSpreadsheetRequest {Requests = new List<Request> {request}};

// First way: create a batch update request from scratch then execute it
var responseFirstWay = new SpreadsheetsResource.BatchUpdateRequest(MY_SHEETS_SERVICE, deleteRequest, MY_SPREADSHEET_ID).Execute();

// Second way: create a batch update request from the existing SheetsService then execute it
var responseSecondWay = MY_SHEETS_SERVICE.Spreadsheets.BatchUpdate(deleteRequest, MY_SPREADSHEET_ID).Execute();

我尝试了各种索引,但它似乎并没有改变任何东西(在上面的示例中,我放置了 21 个,所有行最多 30 行都填充了数据)。我觉得将SheetId 设置为零有点奇怪,但这是我在访问 Google 表格时使用的gid 参数。

无论我如何创建BatchUpdateRequest,执行后响应都是空的。

【问题讨论】:

  • 您使用的是什么类型的数据库?答案可能是由于数据库。例如,SQL Server 不会按顺序存储数据。它是一个多用户线程数据库,因此每次您进行查询时,数据都可以以随机顺序返回。因此,要始终获得相同的订单,您需要使用 OrderBy。然后,如果您需要删除,您可以使用 TOP(或 Bottom)仅删除一个结果。
  • @jdweng ?它是 Google Sheets API,而不是数据库
  • 请注意。 Google 表格是前端应用程序,不确定它使用的是什么后端数据库。以下网页只说 SQL 数据库:cloud.google.com/blog/products/application-development/…

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


【解决方案1】:

根据DimensionRange 的文档,索引是半开,这意味着起始索引是包含的,而结束索引是排除的

您应该将 EndIndex 更改为 22 以删除第 21 行。

【讨论】:

  • 我已经多次阅读这部分文档,但我并没有那样理解。完美运行,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-13
  • 2018-11-08
  • 1970-01-01
  • 2017-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多