如何使用GoogleSheetsAPIv4JavaScript删除GoogleSheet中的空行?

如何使用GoogleSheetsAPIv4JavaScript删除GoogleSheet中的空行?,javascript,google-sheets-api,Javascript,Google Sheets Api,上面的代码是从google工作表中删除一行。现在,我的问题是如何通过移动其余的行来从google工作表中删除该空行?回答: 您需要使用batchUpdate来完成此操作 请求示例: 上述请求将从具有给定gid的工作表中删除第一行 这些行是0索引的,因此从0开始到1结束将删除第一行。同样,从8开始到18结束将删除第9-18行 方法如下: { "requests": [ { "deleteDimension": { &q

上面的代码是从google工作表中删除一行。现在,我的问题是如何通过移动其余的行来从google工作表中删除该空行?

回答: 您需要使用batchUpdate来完成此操作

请求示例: 上述请求将从具有给定gid的工作表中删除第一行

这些行是0索引的,因此从0开始到1结束将删除第一行。同样,从8开始到18结束将删除第9-18行

方法如下:

{
  "requests": [
    {
      "deleteDimension": {
        "range": {
          "sheetId": sheetId,
          "dimension": "ROWS",
          "startIndex": 0,
          "endIndex": 1
        }
      }
    }
  ]
}
注意:这是
电子表格.batchUpdate
而不是
电子表格.values.batchUpdate

现在一起:

gapi.client.sheets.spreadsheets.batchUpdate(resource)
为了获得哪些行为空,您必须使用
电子表格.values.get
并手动循环响应

答复将采用以下形式:;您需要循环查看
响应。值

const resource = {
  "requests": [
    {
      "deleteDimension": {
        "range": {
          "sheetId": sheetId,
          "dimension": "ROWS",
          "startIndex": 0,
          "endIndex": 1
        }
      }
    }
  ]
}

const response = gapi.client.sheets.spreadsheets.batchUpdate({
  "spreadsheetId": "your-spreadsheet-id",
  "resource": resource
})
  .then(function(response) {
    console.log("Response is: \n", response)
  }, function(err) { 
       console.error("Execute error", err)
     })
在本例中,我使用的电子表格如下所示:

对于此电子表格,
响应将是:

{
  "range": "Sheet1!A1:Z1000",
  "majorDimension": "ROWS",
  "values": [
    [] // each row is an array
  ]
}
所以我们只需要检查
response.result.values
的哪些元素是空数组: 假设电子表格中的列最多为
ZZZ
,因此要填充整个范围,您可以提出以下请求:

{
  "range": "Sheet1!A1:Z1000",
  "majorDimension": "ROWS",
  "values": [
    [ "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" ],
    [ "2", "2", "2", "2", "2", "2", "2", "2", "2", "2" ],
    [ "3", "3", "3", "3", "3", "3", "3", "3", "3", "3" ],
    [ "4", "4", "4", "4", "4", "4", "4", "4", "4", "4" ],
    [],
    [ "6", "6", "6", "6", "6", "6", "6", "6", "6", "6" ],
    [],
    [],
    [ "9", "9", "9", "9", "9", "9", "9", "9", "9", "9" ],
    [ "10", "10", "10", "10", "10", "10", "10", "10", "10", "10" ],
  ]
}
然后向后循环此数组,将值传递到上一个
batchUpdate
请求中,以将其从工作表中完全删除。从下到上删除很重要,这样就不会更改行号并意外删除其中包含数据的行

注意:这不会删除超过最后一个数据行的空行,仅删除数据集中的空行

我希望这对你有帮助

参考资料:
答案: 您需要使用batchUpdate来完成此操作

请求示例: 上述请求将从具有给定gid的工作表中删除第一行

这些行是0索引的,因此从0开始到1结束将删除第一行。同样,从8开始到18结束将删除第9-18行

方法如下:

{
  "requests": [
    {
      "deleteDimension": {
        "range": {
          "sheetId": sheetId,
          "dimension": "ROWS",
          "startIndex": 0,
          "endIndex": 1
        }
      }
    }
  ]
}
注意:这是
电子表格.batchUpdate
而不是
电子表格.values.batchUpdate

现在一起:

gapi.client.sheets.spreadsheets.batchUpdate(resource)
为了获得哪些行为空,您必须使用
电子表格.values.get
并手动循环响应

答复将采用以下形式:;您需要循环查看
响应。值

const resource = {
  "requests": [
    {
      "deleteDimension": {
        "range": {
          "sheetId": sheetId,
          "dimension": "ROWS",
          "startIndex": 0,
          "endIndex": 1
        }
      }
    }
  ]
}

const response = gapi.client.sheets.spreadsheets.batchUpdate({
  "spreadsheetId": "your-spreadsheet-id",
  "resource": resource
})
  .then(function(response) {
    console.log("Response is: \n", response)
  }, function(err) { 
       console.error("Execute error", err)
     })
在本例中,我使用的电子表格如下所示:

对于此电子表格,
响应将是:

{
  "range": "Sheet1!A1:Z1000",
  "majorDimension": "ROWS",
  "values": [
    [] // each row is an array
  ]
}
所以我们只需要检查
response.result.values
的哪些元素是空数组: 假设电子表格中的列最多为
ZZZ
,因此要填充整个范围,您可以提出以下请求:

{
  "range": "Sheet1!A1:Z1000",
  "majorDimension": "ROWS",
  "values": [
    [ "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" ],
    [ "2", "2", "2", "2", "2", "2", "2", "2", "2", "2" ],
    [ "3", "3", "3", "3", "3", "3", "3", "3", "3", "3" ],
    [ "4", "4", "4", "4", "4", "4", "4", "4", "4", "4" ],
    [],
    [ "6", "6", "6", "6", "6", "6", "6", "6", "6", "6" ],
    [],
    [],
    [ "9", "9", "9", "9", "9", "9", "9", "9", "9", "9" ],
    [ "10", "10", "10", "10", "10", "10", "10", "10", "10", "10" ],
  ]
}
然后向后循环此数组,将值传递到上一个
batchUpdate
请求中,以将其从工作表中完全删除。从下到上删除很重要,这样就不会更改行号并意外删除其中包含数据的行

注意:这不会删除超过最后一个数据行的空行,仅删除数据集中的空行

我希望这对你有帮助

参考资料:

我认为OP想要删除空行,可能不想删除非空行。因此,我认为首先可能需要搜索空行并为batchUpdate方法创建请求主体。如果我误解了OP的问题,我道歉。@Tanaike你可能是对的。目前,需要搜索空行。我将介绍如何搜索空行;对于未来的读者,如果这项功能还没有实现,请给这项功能申请一颗星星,以提高谷歌的优先权。感谢您的回复。我认为
response.values
返回
undefined
。在这种情况下,如何修改为
response.result.values
?@Tanaike很好!谢谢,更新:)我以为OP想要删除空行,可能不想删除非空行。因此,我认为首先可能需要搜索空行并为batchUpdate方法创建请求主体。如果我误解了OP的问题,我道歉。@Tanaike你可能是对的。目前,需要搜索空行。我将介绍如何搜索空行;对于未来的读者,如果这项功能还没有实现,请给这项功能申请一颗星星,以提高谷歌的优先权。感谢您的回复。我认为
response.values
返回
undefined
。在这种情况下,如何修改为
response.result.values
?@Tanaike很好!谢谢,更新:)