我目前使用 Excel Office 脚本从 Jotform API 获得响应。
在我的 Json 响应中,在我的数组的第一级,我得到了一些信息,例如“提交 ID”和“提交的时间戳”,然后我有一个包含该提交的所有答案的关键“答案”(可能是 150 个答案) . 所以它是一个二维数组。
在所有迭代之后,我无法使用 setValues 并一次性在 Excel 中编写所有答案。
这是我的迭代,其中行将是“提交 ID + 时间戳”,然后在它旁边,子行将包含该提交的所有答案,每个答案都是一个 Excel 行
let rows: (string | boolean | number)[][] = [];
let subRows: (string | boolean | number)[][] = [];
for (const [key, value] of Object.entries(result)) {
rows.push([value["id"], value["created_at"]]);
for (const [subKey, subValue] of Object.entries(value["answers"])) {
if (subValue.hasOwnProperty("answer")) {
subRows.push([checkAnswer(subValue["answer"])]);
}
}
}
// This function is important because sometimes I have several answers in one answer, so I join it when necessary.
function checkAnswer(answer: string[]) {
if (answer.length > 1) {
return (typeof answer == "string" ? answer : answer.join("||"));
}
return answer;
}
// Here are the methods I use to write the result on my Excel file. The first one is great, it is one Excel row/ one result.
const targetRange = workSheet.getRange('A5').getResizedRange(rows.length - 1, rows[0].length - 1);
targetRange.setValues(rows);
// I TRANSPOSE so that the subROWS get in line, not vertically.
subRows = subRows[0].map((_, colIndex) => subRows.map(row => row[colIndex]));
const subTargetRange = workSheet.getRangeByIndexes(4, 2, subRows.length, subRows[0].length).setValues(subRows);
我的问题是所有子行(所有答案)都写在一行中,没有一个答案/一行。
我可以在迭代中使用 setValues,但我总是尽量不要太慢,因为它会减慢工作速度。
最好能够制作一个大数组并在一个 setValues 中完成所有操作。
任何想法 ?
非常感谢,
塞德里克