javascript - 如何优化谷歌电子表格函数的执行时间?
问题描述
function findAgentRow(){
let row = 2;
let emailCell;
let maxRow = sheet.getLastRow();
while(--maxRow){
emailCell = sheet.getRange(row, findColumn(sheet, "Agent"));
if(emailCell.getValue() == agentEmail){
return row
}else if(row == sheet.getLastRow()){
return 0;
}else{
row = row + 1;
}
}
}
我编写了一个 google 电子表格函数,它可以定位包含某人信息的行。它检查该行是否包含此人的电子邮件。问题是当电子表格包含超过 700 行时,执行时间超过 2 分钟。
有没有办法优化它?
解决方案
尽量不要findColumn
在每个循环中使用。
您还应该以只使用一个为目标getValues
。
function findAgentRow(agentEmail) {
// const sheet = SpreadsheetApp.getActiveSheet();
const row = 2;
const col = findColumn(sheet, 'Agent');
const values = sheet.getRange(row, col, sheet.getLastRow() - 1, 1).getValues().flat();
return values.indexOf(agentEmail) + row;
}
function findColumn(sheet, value) {
const row = 1;
const values = sheet.getRange(row, 1, 1, sheet.getLastColumn()).getValues()[0];
return values.indexOf(value) + 1;
}
推荐阅读
- angular - 通过拦截器触发 angular2 通知
- powershell - 删除本地用户帐户的“启用远程控制”
- php - 为什么每个新闻站点只能显示一个标签?
- csv - 在 CSV 中交换列的免费软件工具
- python - 处理数据时,继续使用 recvfrom() 监听 udp 端口服务器 python
- javascript - 将 EJS 变量传递给 app.post 节点 js
- javascript - 使用 jQuery 获取 URL 参数并将它们显示在 HTML 输入文本字段中
- android - Android compileSdk 27 启动服务自动显示通知
- facebook - Facebook 应用评论:需要多长时间?(2018 年春季后的变化)
- c# - bot框架内的json文件中的autofac配置