![](/img/trans.png)
[英]How to insert the current date time into a google sheet, respecting the sheet's timezone, using sheets api v4?
[英]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.