我正在寻求有关构建脚本的帮助。从本质上讲,我需要一个可以执行以下操作的脚本:
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);
}
}
}
答案 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();
}
}