javascript - 使用下面的代码,我需要添加另一个函数,如果选中了复选框,则仅移动单元格 A 中的数据和整行
问题描述
使用下面的代码,我需要添加另一个函数来完成 else if 语句所做的所有事情,而不是将整行数据移动到另一个工作表我只需要从单元格 A 移动数据。
我还需要添加一个函数,如果选中复选框,它将移动整行数据。
function onEdit(e) {
if (e.value === 'COMPLETED FAB') {
var sheet = e.range.getSheet();
if (sheet.getSheetName() == 'Fabrication') {
logSheet = e.source.getSheetByName('Fabrication Completed');
var row = e.range.getRow();
var lastRow = logSheet.getLastRow();
var range = sheet.getRange(row, 1, 1, sheet.getLastColumn());
range.copyTo(logSheet.getRange(lastRow + 1, 1));
sheet.deleteRow(row);
}
}
else if (e.value === 'FINISHED') {
var sheet = e.range.getSheet();
if (sheet.getSheetName() == 'Service') {
logSheet = e.source.getSheetByName('Service Completed');
var row = e.range.getRow();
var lastRow = logSheet.getLastRow();
var range = sheet.getRange(row, 1, 1, sheet.getLastColumn());
range.copyTo(logSheet.getRange(lastRow + 1, 1));
sheet.deleteRow(row);
}
}
else if (e.value === 'SURV COMP') {
var sheet = e.range.getSheet();
if (sheet.getSheetName() == 'Surveys') {
logSheet = e.source.getSheetByName('Surveys Completed');
var row = e.range.getRow();
var lastRow = logSheet.getLastRow();
var range = sheet.getRange(row, 1, 1, sheet.getLastColumn());
range.copyTo(logSheet.getRange(lastRow + 1, 1));
sheet.deleteRow(row);
}
}
}
解决方案
为了实现您的目标,您可以用场景替换if…else
逻辑。switch
最终结果与此类似:
function onEdit(e) {
switch (e.value) {
case 'COMPLETED FAB':
var sheet = e.range.getSheet();
if (sheet.getSheetName() == 'Fabrication') {
logSheet = e.source.getSheetByName('Fabrication Completed');
var row = e.range.getRow();
var lastRow = logSheet.getLastRow();
var range = sheet.getRange(row, 1, 1, sheet.getLastColumn());
range.copyTo(logSheet.getRange(lastRow + 1, 1));
sheet.deleteRow(row);
}
break;
case 'FINISHED':
var sheet = e.range.getSheet();
if (sheet.getSheetName() == 'Service') {
logSheet = e.source.getSheetByName('Service Completed');
var row = e.range.getRow();
var lastRow = logSheet.getLastRow();
var range = sheet.getRange(row, 1, 1, sheet.getLastColumn());
range.copyTo(logSheet.getRange(lastRow + 1, 1));
sheet.deleteRow(row);
}
break;
case 'SURV COMP': {
var sheet = e.range.getSheet();
if (sheet.getSheetName() == 'Surveys') {
logSheet = e.source.getSheetByName('Surveys Completed');
var row = e.range.getRow();
var lastRow = logSheet.getLastRow();
var range = sheet.getRange(row, 1, 1, sheet.getLastColumn());
range.copyTo(logSheet.getRange(lastRow + 1, 1));
sheet.deleteRow(row);
}
break;
}
}
}
之前的代码将与您的原始代码一样工作,但如有任何疑问,请随时评论我的答案。
推荐阅读
- android - 交易费用或货币在 Telr 中无效
- database - #1227 - 访问被拒绝;您需要(至少一个)超级权限才能在服务器 Cpanel 中执行此操作
- php - PHP 通过构造函数将对象作为参数传递
- javascript - 在 Vuejs 和 Laravel 中上传文件以及动态输入字段
- haskell - 关于在具有多态类型签名的函数中使用排序操作的问题
- python - 列表中点之间的线性插值
- c# - 如何处理 bitmap.Save(Response.OutputStream, ImageFormat.Jpeg) 的临时屏幕渲染?
- reactjs - fs.readdirSync 不是一个函数 - electron + react.js
- c# - 如何在不创建类的情况下将 Json 字符串反序列化为 Type
- java - 编译时间常数如何在java内部工作