gpt4 book ai didi

node.js - 在现有数据的中间插入一行

转载 作者:太空宇宙 更新时间:2023-11-04 02:45:39 25 4
gpt4 key购买 nike

我尝试使用 node.jsGoogle Sheets API v4 在电子表格中间插入一个空行。过去几天我一直在到处研究,但找不到任何相关文档。

Google 电子表格文档仅讨论 .append(),它在电子表格的末尾追加一行。这不是我想要的哈哈。

有没有办法在数据中间插入一个空行?

<小时/>

所以..这是我迄今为止编辑的内容。

function newRow() {
return new Promise((resolve, reject) => {
return getAuthorizedClient().then(client => {
const sheets = google.sheets({
version: 'v4',
auth: client
});
var requests = [];

requests.push({
insertDimension: {
range: {
sheetId: MY_SHEET_ID,
dimension: 'row',
startIndex: 50,
endIndex: 1
},
inheritFromBefore: false
}
});
var batchUpdateRequest = { requests: requests };

sheets.spreadsheets.values.batchUpdate({
spreadsheetId: CONFIG_SHEET_ID,
resource: batchUpdateRequest
});
});
});
}

getAuthorizedClient 是我为身份验证制作的函数。无论如何,我遇到的问题是

Error: Invalid JSON payload received. Unknown name "requests": Cannot find field.

我不太确定我做错了什么 - 我直接按照 Google API 文档进行操作。

最佳答案

根据 Sheets API 引用,要插入行,您需要发送 InsertDimensionRequest具有有效的 DimensionRange属性。

确实,这部分代码是正确的:

{
insertDimension: {
range: {
sheetId: MY_SHEET_ID,
dimension: 'ROWS',
startIndex: 50,
endIndex: 1
},
inheritFromBefore: false // Use start (true) or end (false) index to set defaults.
}
}

(尽管我相信您希望将结束索引设置为 51 而不是 1。这样就会在第 50 个索引处插入一行,其中第 1 行是索引 0。)

来自错误消息

Error: Invalid JSON payload received. Unknown name "requests": Cannot find field.

我们可以确定您的特定 batchUpdate 请求不正确。句法。请注意,Sheets API 中有多个类实现了 batchUpdate 方法:spreadsheets.batchUpdatespreadsheets.values.batchUpdate 。仅对于 spreadsheets 资源的 batchUpdate 方法来说,输入 Requests 的数组才是有效参数 - values 资源的批量更新需要 data 参数(即要写入目标单元格的值)。

因此,修复方法是更改​​用于构造 batchUpdate 请求的类:

function newRow(sheets, config, options) {
var newRowRequest = {
insertDimension: {
range: {
sheetId: options.sheetId,
dimension: 'ROWS',
startIndex: options.start,
endIndex: options.start + options.howMany
},
inheritFromBefore: options.inheritBefore
}
};

var batchUpdateRequest = {
requests: [newRowRequest]
// includeSpreadsheetInResponse: ...,
// responseRanges: [...],
// responseIncludeGridData: ...
};
return sheets.spreadsheets.batchUpdate({
spreadsheetId: config.spreadsheetId,
resource: batchUpdateRequest
}); // Returns AxiosPromise
}

关于node.js - 在现有数据的中间插入一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51249462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com