提问人:frealk 提问时间:11/12/2023 最后编辑:frealk 更新时间:11/12/2023 访问量:166
JavaScript 性能表单到工作表
JavaScript performance forms to sheet
问:
我有一个问题,我只是找不到解决方案。 这是关于我的剧本的表现。我通过表单将数据传输到我的工作表。我用“onFormSubmit(e)”截取这些数据,并根据条件将其拆分为另外两张纸。如果答案“let out”为“OK”,则所有与“Input”匹配项都应在指定列中补充“A-”。 当我使用所有 20 个输入数字运行脚本时,传输大约需要 20 秒。 我想把这个时间至少减少一半。关于如何实现这一点,你有什么建议给我吗?
function onFormSubmit(e) {
let lock = LockService.getScriptLock();
try {
lock.waitLock(10000);
} catch (e) {
SpreadsheetApp.getUi().alert("⚠️ Timeout", "Try again later!", SpreadsheetApp.getUi().ButtonSet.OK);
return;
}
const ss = SpreadsheetApp.getActiveSpreadsheet();
const cpSheet = ss.getSheetByName('CP');
const seSheet = ss.getSheetByName('SE');
let out = "OK";
let time = e.values[0];
let email = e.values[1];
let status = e.values[2];
let info = e.values[23];
let inputLen = e.values.filter(String).length-3;
if (info) {
let inputLen = inputLen - 1;
}
function getMultipleRowsData() {
let data = [];
for(let i =0, len = inputLen; i < len; i++) {
let input = e.values[3+i];
data.push([time, email, status, input, info]);
}
return data;
}
let data = getMultipleRowsData();
if (status == out) {
let lastRow1 = cpSheet.getLastRow();
cpSheet.getRange(lastRow1 + 1,1,data.length, data[0].length).setValues(data);
} else {
let lastRow2 = seSheet.getLastRow();
seSheet.getRange(lastRow2 + 1,1,data.length, data[0].length).setValues(data);
}
}
表单表如下所示:
时间 |电子邮件 |状态 |输入1 |输入2 |输入3 |... |输入20 |信息
我希望有人能帮助我。
答: 暂无答案
评论
The script when I run it with all 20 input numbers takes about 20 seconds for the transmission.
我的测试大约需要 1 秒。你还在这张纸上运行什么?