gpt4 book ai didi

node.js - 如何在谷歌工作表中同步添加行?

转载 作者:太空宇宙 更新时间:2023-11-03 23:13:16 25 4
gpt4 key购买 nike

我正在使用 google-spreadsheet 库来访问 Google 表格并将数据插入其中。我能够添加多行,但每行都没有按特定顺序添加,我猜是由于 addRow() 异步行为。

示例数据是:

let myData = [{id: "1", fname: "John"}, {id: "2", fname: "Matt"}, {id: "3", fname: "Paul"}]

for (let i = 0; i < myData.length; i++) {
let row = myData[i];

// Async call to insert row.
doc.addRow(sheetIndex, row, (err) => {
if (err) throw err;
});
}

For 循环迭代并将每个行对象传递给 addRow(),但它不关心每行插入 Googlesheets 时的顺序。

我尝试使用异步等待方法来等待 doc.addRow() 在迭代到下一行对象之前,但我没有运气。有没有办法按照我传递的顺序实现插入?提前致谢! :)

最佳答案

您无法等待该函数,可能是因为它不返回 Promise。因此,让我们首先 promise 该功能。

function asyncAddRow(sheetIndex, row) {
return new Promise((res, rej) => {
doc.addRow(sheetIndex, row, (err) => {
if (err) rej(err);
else res(true);
});
})
}

现在,您不再调用 doc.addRow,而是调用我们的 asyncAddRow。因为它返回了一个 promise ,所以你现在可以等待它。像这样:

for (let i = 0; i < myData.length; i++) {
let row = myData[i];

await asyncAddRow(sheetIndex, row);
}

关于node.js - 如何在谷歌工作表中同步添加行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58693135/

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