簡體   English   中英

如何使用谷歌表 api v4 javascript 刪除谷歌表中的空白行?

[英]How to remove a blank row in google sheet using google sheets api v4 javascript?

var params1 = {
      spreadsheetId: '1g9y32IkyujOupw6O6eRhtlCcwhn5vv9mM_Yr4peRRmo', 
      range: str,
};
    
var clearValuesRequestBody = {
};
    
var request = await gapi.client.sheets.spreadsheets.values.clear(params1, clearValuesRequestBody);

上面的代碼是從谷歌表中刪除一行。 現在,我的問題是如何通過移動行的 rest 從谷歌表中刪除該空白行?

回答:

您需要使用 batchUpdate 來執行此操作。

請求示例:

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

上述請求將從具有給定 gid 的工作表中刪除第一行。

這些行是 0 索引的,因此從 0 開始到 1 結束將刪除第一行。 同樣,從 8 開始到 18 結束將刪除第 9-18 行。

方法如下:

gapi.client.sheets.spreadsheets.batchUpdate(resource)

注意:這是spreadsheets.batchUpdate不是spreadsheets.values.batchUpdate

現在都在一起了:

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)
     })

為了獲取哪些行是空白的,您必須使用spreadsheets.values.get並手動循環瀏覽響應。

回復將采用以下形式; 您將需要遍歷response.values

{
  "range": "Sheet1!A1:Z1000",
  "majorDimension": "ROWS",
  "values": [
    [] // each row is an array
  ]
}

在此示例中,我使用的電子表格如下所示:

在此處輸入圖像描述

對於此電子表格, response將是:

{
  "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" ],
  ]
}

所以我們只需要檢查response.result.values的哪些元素是空的 arrays:假設電子表格的列最多為ZZZ以便封裝整個范圍,您可以提出請求:

const emptyRows = []

gapi.client.sheets.spreadsheets.values.get({
  "spreadsheetId": "your-spreadsheet-id",
  "range": "A:ZZZ"
})
  .then(function(response) {
    response.result.values.forEach(function(row, index) {
      if (row.length == 0) emptyRows.push(index)
    })  
  }, function(err) { 
       console.error("Execute error", err)
     })

然后向后循環遍歷該數組,將值傳遞到上一個batchUpdate請求中以將它們從工作表中完全刪除。 從下往上刪除很重要,以免更改行號並意外刪除其中包含數據的行。

注意:這不會刪除最后一個數據行之后的空行,只會刪除數據集中的空行。

我希望這對你有幫助!

參考:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM