首先,我是新手,不是开发人员.
我正在try 将数据从一个文件夹中的多个Excel文件复制到Google Sheets的一个工作表中.我使用的是EXCELJS和Google Sheet API.问题是,尽管我使用的是"Append"而不是"UPDATE"方法,但它会覆盖数据.我想这是因为它的功能是异步的.这就是原因吗?
以下是代码的部分内容:
client.authorize(function (err, tokens) {
if (err) {
console.log(err);
return;
} else {
console.log('Connected');
gsrun();
fs.readdir(folder, (err, files) => {
files.forEach(file => {
gsheetsUpload(file);
});
});
};
});
function gsrun() {
const clearOptions = {
spreadsheetId: sID,
range: 'Sheet1!A2:AB1000',
};
let resRemove = gsapi.spreadsheets.values.clear(clearOptions);
};
async function gsheetsUpload(f) {
let filename = folder + f
let wb = new Excel.Workbook();
let excelFile = await wb.xlsx.readFile(filename);
let ws = excelFile.getWorksheet('Some worksheet');
let data = ws.getSheetValues();
let prefix = ws.getCell('D6').value;
let dataArray = [];
data = data.map(function (r) {
if (r[1] == 'Some cell value') {
dataArray.push([r[2]]);
};
});
const updateOptions = {
spreadsheetId: sID,
range: 'Sheet1!A2',
valueInputOption: 'USER_ENTERED',
resource: { values: dataArray }
};
console.log(dataArray);
let resUpload = await gsapi.spreadsheets.values.append(updateOptions);
};
我阅读了关于promise 的内容,并try 使用它们.我也试过设置超时,但也没有用.如何让脚本在下一次迭代开始之前等待每个迭代结束?