如何使用 google sheets api v4 javascript 删除 google sheet 中的空白行?
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);
以上代码是从googlesheet中删除一行。现在,我的问题是如何通过移动其余行从 google sheet 中删除该空白行?
答案:
您需要使用 batchUpdate 来执行此操作。
请求示例:
{
"requests": [
{
"deleteDimension": {
"range": {
"sheetId": sheetId,
"dimension": "ROWS",
"startIndex": 0,
"endIndex": 1
}
}
}
]
}
上述请求将从具有给定 gid 的 sheet 中删除第一行。
这些行是从 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
]
}
在这个例子中,我使用的 Spreadsheet 看起来像这样:
对于此点差sheet,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
的哪些元素是空数组:
假设 Spreadsheet 的列最多为 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
请求以将它们从中完全删除sheet。重要的是从下往上删除,以免更改行号并意外删除其中包含数据的行。
注意:这不会删除最后一个数据行之后的空行,只会删除数据集中的空行。
参考文献:
var params1 = {
spreadsheetId: '1g9y32IkyujOupw6O6eRhtlCcwhn5vv9mM_Yr4peRRmo',
range: str,
};
var clearValuesRequestBody = {
};
var request = await gapi.client.sheets.spreadsheets.values.clear(params1, clearValuesRequestBody);
以上代码是从googlesheet中删除一行。现在,我的问题是如何通过移动其余行从 google sheet 中删除该空白行?
答案:
您需要使用 batchUpdate 来执行此操作。
请求示例:
{
"requests": [
{
"deleteDimension": {
"range": {
"sheetId": sheetId,
"dimension": "ROWS",
"startIndex": 0,
"endIndex": 1
}
}
}
]
}
上述请求将从具有给定 gid 的 sheet 中删除第一行。
这些行是从 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
]
}
在这个例子中,我使用的 Spreadsheet 看起来像这样:
对于此点差sheet,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
的哪些元素是空数组:
假设 Spreadsheet 的列最多为 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
请求以将它们从中完全删除sheet。重要的是从下往上删除,以免更改行号并意外删除其中包含数据的行。
注意:这不会删除最后一个数据行之后的空行,只会删除数据集中的空行。