Google apps script 更新列a中的单元格时创建新图纸
我正在寻找帮助建立一个脚本。基本上我需要的是一个脚本,它可以: a) 更新列a中的单元格时,在工作簿中创建新工作表,但不创建重复的工作表 b) 复制并粘贴与更新列关联的范围 c) 根据A列中更新并最终更新的单元格重命名图纸 d) 将新图纸限制为200行 如蒙协助,将不胜感激 我知道下面的代码没有运行,我一直在尝试许多不同的方法来测试函数,并想给出一些我一直在努力的想法Google apps script 更新列a中的单元格时创建新图纸,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我正在寻找帮助建立一个脚本。基本上我需要的是一个脚本,它可以: a) 更新列a中的单元格时,在工作簿中创建新工作表,但不创建重复的工作表 b) 复制并粘贴与更新列关联的范围 c) 根据A列中更新并最终更新的单元格重命名图纸 d) 将新图纸限制为200行 如蒙协助,将不胜感激 我知道下面的代码没有运行,我一直在尝试许多不同的方法来测试函数,并想给出一些我一直在努力的想法 function onEdit(e){ var range = e.range; if(range.getCol
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);
}
}
}
下面是一个使用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();
}
}
谢谢你伸出援手。请分享您迄今为止所做的任何代码或工作好吗?这将帮助其他读者了解如何帮助你。否则,就不可能为您指明正确的方向。您的代码没有多大意义
.setName(电子表格.getRange('A214:A216')
setName()需要一个字符串,并且您给出了一个范围。阅读文档并更新脚本。这非常完美。谢谢你。最后,我需要弄清楚如何自动导入相对范围“\'Sheet5\”,而不是创建空白工作表的脚本!A2:J24'导入的相对范围在哪里?我们可以把一个公式放在新表格的某个地方,你希望它是什么?从正在更新的同一张表格,在本例中是第5页。该范围是上述代码中正在更新的列/行的扩展。例如,当前当表5上的A2输入“Test”时,将创建一个名为“Test”的新表。现在,我想将A2:J4从同一工作表5导入或复制并粘贴到新的“测试”工作表中,但要使脚本与正在更新的单元格相关,如上面的代码所示。是否要将它们复制到新工作表上的相同范围?它们应复制到新工作表的A1:J3。谢谢