首页 > 解决方案 > 使用下面的代码,我需要添加另一个函数,如果选中了复选框,则仅移动单元格 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);

        }
      }

    }

标签: javascriptfunctionif-statementgoogle-apps-scriptgoogle-sheets

解决方案


为了实现您的目标,您可以用场景替换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;
    }
  }
}

之前的代码将与您的原始代码一样工作,但如有任何疑问,请随时评论我的答案。


推荐阅读