在写入 excel sheet 之前等待 Google 翻译 api
Wait for Google translate api before writing to excel sheet
我不知道如何让我的代码在尝试写入 excel sheet 之前等待 google 翻译。在控制台中,我可以看到翻译后的数据,但在 excel 文档中,它仍然是原始语言。我知道我做错了,但我想不通。
它没有在下面的代码中显示,但在开始时我从 .csv 文件中读取数据。只获取我需要的数据并将其存储为每个案例的对象数组。然后我遍历该数组并将每个 case/object 写到一个 excel 文件中。
有一个名为 verbatim 的道具,它是我在将其写入 excel 文件之前尝试翻译成英语的文本。但是没用。
cases.push({
caseid: row['[CALLERNO_EMAIL_SOCIAL]'],
caseorigine: row['[CASE_ORIGINE]'],
emailaddress: row['[EMAIL]'],
agent: row['[AGENT]'],
region: row['[REGION2]'],
csat: parseInt(row['Satisfaction note'], 10),
fcr: fcr,
phone: row['[PHONE]'],
sentDate: row.date_envoi.slice(0, 10),
receivedDate: row.date_reponse.slice(0, 10),
verbatim: row['Verbatim experience'],
tally1: row['[TALLY_1]'],
tally2: row['[TALLY_2]'],
});
const filter = {
'Email entrant': 'emailentrant',
'Email Sortant': 'emailsortant',
'Appel Entrant': 'appelentrant',
'Appel Sortant': 'appelsortant',
Chat: 'chat',
};
function filterArray(array, filter) {
return array.filter((item) => {
if (filters.includes(filter[item.caseorigine])) {
if (!filters.includes('includecsat5')) {
if (parseInt(item.csat, 10) !== 5) return item;
} else {
return item;
}
}
});
}
const filteredCases = await filterArray(cases, filter);
// translate verbatim value to english
async function translateTextWithModel() {
filteredCases.forEach(async (item) => {
const options = {
to: target,
model: model,
};
if (item.verbatim !== '') {
let [verbatim] = await translate.translate(item.verbatim, options);
console.log(verbatim);
item.verbatim = verbatim;
}
});
}
await translateTextWithModel();
// write data to excel
filteredCases.forEach(async (item) => {
worksheet.getRow(rowNum).getCell(1).value = item.caseid;
worksheet.getRow(rowNum).getCell(2).value = item.caseorigine;
worksheet.getRow(rowNum).getCell(3).value = item.emailaddress;
worksheet.getRow(rowNum).getCell(4).value = item.agent;
worksheet.getRow(rowNum).getCell(5).value = item.region;
worksheet.getRow(rowNum).getCell(6).value = item.csat;
worksheet.getRow(rowNum).getCell(7).value = item.fcr;
worksheet.getRow(rowNum).getCell(8).value = item.phone;
worksheet.getRow(rowNum).getCell(9).value = item.sentDate;
worksheet.getRow(rowNum).getCell(10).value = item.receivedDate;
worksheet.getRow(rowNum).getCell(11).value = item.verbatim;
worksheet.getRow(rowNum).getCell(12).value = item.tally1;
worksheet.getRow(rowNum).getCell(13).value = item.tally2;
worksheet.getRow(rowNum).commit();
rowNum += 1;
});
const outFile = `${destination}/${shortid.generate()}.xlsx`;
await workbook.xlsx.writeFile(outFile).then(async function () {
const file = new File({
title,
description,
file_path: outFile,
file_mimetype: mimetype,
});
await file.save().then(res.send('file uploaded successfully.'));
});
我使用名为 p-iteration 的模块修复了它
const { forEach } = require('p-iteration');
await forEach(filteredCases, async (item) => {
async function translateTextWithModel(text) {
const options = {
to: 'en',
model: 'nmt',
};
if (text !== '') {
var [verbatim] = await translate.translate(text, options);
return verbatim;
}
}
item.verbatim = await translateTextWithModel(item.verbatim);
worksheet.getRow(rowNum).getCell(1).value = item.caseid;
worksheet.getRow(rowNum).getCell(2).value = item.caseorigine;
worksheet.getRow(rowNum).getCell(3).value = item.emailaddress;
worksheet.getRow(rowNum).getCell(4).value = item.agent;
worksheet.getRow(rowNum).getCell(5).value = item.region;
worksheet.getRow(rowNum).getCell(6).value = item.csat;
worksheet.getRow(rowNum).getCell(7).value = item.fcr;
worksheet.getRow(rowNum).getCell(8).value = item.phone;
worksheet.getRow(rowNum).getCell(9).value = item.sentDate;
worksheet.getRow(rowNum).getCell(10).value = item.receivedDate;
worksheet.getRow(rowNum).getCell(11).value = item.verbatim;
worksheet.getRow(rowNum).getCell(12).value = item.tally1;
worksheet.getRow(rowNum).getCell(13).value = item.tally2;
worksheet.getRow(rowNum).commit();
rowNum += 1;
});
我不知道如何让我的代码在尝试写入 excel sheet 之前等待 google 翻译。在控制台中,我可以看到翻译后的数据,但在 excel 文档中,它仍然是原始语言。我知道我做错了,但我想不通。
它没有在下面的代码中显示,但在开始时我从 .csv 文件中读取数据。只获取我需要的数据并将其存储为每个案例的对象数组。然后我遍历该数组并将每个 case/object 写到一个 excel 文件中。
有一个名为 verbatim 的道具,它是我在将其写入 excel 文件之前尝试翻译成英语的文本。但是没用。
cases.push({
caseid: row['[CALLERNO_EMAIL_SOCIAL]'],
caseorigine: row['[CASE_ORIGINE]'],
emailaddress: row['[EMAIL]'],
agent: row['[AGENT]'],
region: row['[REGION2]'],
csat: parseInt(row['Satisfaction note'], 10),
fcr: fcr,
phone: row['[PHONE]'],
sentDate: row.date_envoi.slice(0, 10),
receivedDate: row.date_reponse.slice(0, 10),
verbatim: row['Verbatim experience'],
tally1: row['[TALLY_1]'],
tally2: row['[TALLY_2]'],
});
const filter = {
'Email entrant': 'emailentrant',
'Email Sortant': 'emailsortant',
'Appel Entrant': 'appelentrant',
'Appel Sortant': 'appelsortant',
Chat: 'chat',
};
function filterArray(array, filter) {
return array.filter((item) => {
if (filters.includes(filter[item.caseorigine])) {
if (!filters.includes('includecsat5')) {
if (parseInt(item.csat, 10) !== 5) return item;
} else {
return item;
}
}
});
}
const filteredCases = await filterArray(cases, filter);
// translate verbatim value to english
async function translateTextWithModel() {
filteredCases.forEach(async (item) => {
const options = {
to: target,
model: model,
};
if (item.verbatim !== '') {
let [verbatim] = await translate.translate(item.verbatim, options);
console.log(verbatim);
item.verbatim = verbatim;
}
});
}
await translateTextWithModel();
// write data to excel
filteredCases.forEach(async (item) => {
worksheet.getRow(rowNum).getCell(1).value = item.caseid;
worksheet.getRow(rowNum).getCell(2).value = item.caseorigine;
worksheet.getRow(rowNum).getCell(3).value = item.emailaddress;
worksheet.getRow(rowNum).getCell(4).value = item.agent;
worksheet.getRow(rowNum).getCell(5).value = item.region;
worksheet.getRow(rowNum).getCell(6).value = item.csat;
worksheet.getRow(rowNum).getCell(7).value = item.fcr;
worksheet.getRow(rowNum).getCell(8).value = item.phone;
worksheet.getRow(rowNum).getCell(9).value = item.sentDate;
worksheet.getRow(rowNum).getCell(10).value = item.receivedDate;
worksheet.getRow(rowNum).getCell(11).value = item.verbatim;
worksheet.getRow(rowNum).getCell(12).value = item.tally1;
worksheet.getRow(rowNum).getCell(13).value = item.tally2;
worksheet.getRow(rowNum).commit();
rowNum += 1;
});
const outFile = `${destination}/${shortid.generate()}.xlsx`;
await workbook.xlsx.writeFile(outFile).then(async function () {
const file = new File({
title,
description,
file_path: outFile,
file_mimetype: mimetype,
});
await file.save().then(res.send('file uploaded successfully.'));
});
我使用名为 p-iteration 的模块修复了它
const { forEach } = require('p-iteration');
await forEach(filteredCases, async (item) => {
async function translateTextWithModel(text) {
const options = {
to: 'en',
model: 'nmt',
};
if (text !== '') {
var [verbatim] = await translate.translate(text, options);
return verbatim;
}
}
item.verbatim = await translateTextWithModel(item.verbatim);
worksheet.getRow(rowNum).getCell(1).value = item.caseid;
worksheet.getRow(rowNum).getCell(2).value = item.caseorigine;
worksheet.getRow(rowNum).getCell(3).value = item.emailaddress;
worksheet.getRow(rowNum).getCell(4).value = item.agent;
worksheet.getRow(rowNum).getCell(5).value = item.region;
worksheet.getRow(rowNum).getCell(6).value = item.csat;
worksheet.getRow(rowNum).getCell(7).value = item.fcr;
worksheet.getRow(rowNum).getCell(8).value = item.phone;
worksheet.getRow(rowNum).getCell(9).value = item.sentDate;
worksheet.getRow(rowNum).getCell(10).value = item.receivedDate;
worksheet.getRow(rowNum).getCell(11).value = item.verbatim;
worksheet.getRow(rowNum).getCell(12).value = item.tally1;
worksheet.getRow(rowNum).getCell(13).value = item.tally2;
worksheet.getRow(rowNum).commit();
rowNum += 1;
});