更新列A中的单元格时创建一个新工作表

时间:2019-12-30 16:48:23

标签: google-apps-script google-sheets

我正在寻求有关构建脚本的帮助。从本质上讲,我需要一个可以执行以下操作的脚本:

a)更新A列中的单元格时,在工作簿中创建一个新工作表,但不创建重复项;

b)复制并粘贴与更新的列关联的范围;

c)根据已更新的A列中的单元格重命名工作表,最后

d)将新工作表限制为200行。

任何帮助将不胜感激。

我知道下面的代码无法运行,我一直在尝试许多不同的方法来测试功能,并希望对自己一直在努力的目标有所了解。

function onEdit(e){
    var range = e.range;
    if(range.getColumn() == 1){
        range.setNote("COLUMN: "+ range.getColumn());
    };
function insertSheet() {
  var spreadsheet = SpreadsheetApp.getActive();
      spreadsheet.insertSheet(58);
  spreadsheet.getActiveSheet().setName(spreadsheet.getRange('A214:A216'));
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('EOD Report Automation MASTER'), true);
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('A214:A216'), true);
  spreadsheet.getRange('\'EOD Report Automation MASTER\'!A214:J216').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
}
}
}

1 个答案:

答案 0 :(得分:0)

这是使用onEdit()创建新工作表的简单示例。当您更清楚地说明您要的内容时,我很乐意对其进行修改以满足您的要求。

function onEdit(e) {
  var sh=e.range.getSheet();
  if(sh.getName()=='Sheet5' && e.range.columnStart==1 && e.value) {
    var nA=e.source.getSheets().map(function(sh,i){return sh.getName();});
    if(nA.indexOf(e.value)==-1) {
      var nsh=e.source.insertSheet(e.value);
    }else{
      e.source.toast(Utilities.formatString("Attempt to create a duplicate Sheet: %s", e.value),"Duplicate Check",-1);
    }
    e.range.activate();
  }
}

在A列中输入工作表名称。除非输入重复的名称,否则它将使用您输入的名称创建工作表。

将数据从当前工作表复制到新工作表的版本:

function onEdit(e) {
  var sh=e.range.getSheet();
  if(sh.getName()=='Sheet5' && e.range.columnStart==1 && e.value) {
    var nA=e.source.getSheets().map(function(sh,i){return sh.getName();});
    if(nA.indexOf(e.value)==-1) {
      var tsh=e.source.insertSheet(e.value);
      var svA=sh.getRange(e.range.rowStart,1,3,10).getValues();
      tsh.getRange(tsh.getLastRow()+1,1,svA.length,svA[0].length).setValues(svA);
    }else{
      e.source.toast(Utilities.formatString("Attempt to create a duplicate Sheet: %s", e.value),"Duplicate Check",-1);
    }
    e.range.activate();
  }
}


function onEdit(e) {
  var sh=e.range.getSheet();
  if(sh.getName()=='Sheet5' && e.range.columnStart==1 && e.value) {
    var nA=e.source.getSheets().map(function(sh,i){return sh.getName();});
    if(nA.indexOf(e.value)==-1) {
      var tsh=e.source.insertSheet(e.value);
      var srg=sh.getRange(e.range.rowStart,1,3,10);
      var trg=tsh.getRange(tsh.getLastRow()+1,1);
      srg.copyTo(trg);
    }else{
      e.source.toast(Utilities.formatString("Attempt to create a duplicate Sheet: %s", e.value),"Duplicate Check",-1);
    }
    e.range.activate();
  }
}