2017-06-05 47 views
0

我仍然在学习GoogleApp脚本。任何人都可以引导我以正确的方向如何编辑下面的脚本,而不是按照当前日期命名新工作表,而是从Sheet1的列A取得名称,然后重命名它。如何在Google电子表格的Sheet1的列A中自动创建基于名称的工作表名称?

请注意,我继续更新列A的新名称在列中的新单元格中。

非常感谢您的帮助!

这是脚本我有适用于仅日期:

function onOpen() { 
var menu = [{name: "Add", functionName: "newSheet"}]; 
SpreadsheetApp.getActiveSpreadsheet().addMenu("Sheet", menu); 
} 

function newSheet() { 
var sheetName = formatDate(); 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var templateSheet = ss.getActiveSheet(); 
ss.insertSheet(sheetName, ss.getSheets().length, {template: templateSheet}); 
} 

function formatDate() { 
var month, day, d = new Date(); 
month = ('0'+(d.getUTCMonth()+1)).slice(-2); 
day = ('0'+d.getUTCDate()).slice(-2); 
return d.getUTCFullYear()+'-'+month+'-'+day; 
} 

回答

2

下面的代码获取在山坳中的所有值从A2:A,过滤他们,如果他们是否已经存在,没有任何反应已经存在的表忽略数据中的空白单元格,然后检查。如果图纸不存在,它将复制模板图纸,重新命名并将其放在图纸标签的末尾。

function onOpen() { 
    var menu = [{ 
      name : "Add", 
      functionName : "newSheet" 
     } 
    ]; 
    SpreadsheetApp.getActiveSpreadsheet().addMenu("Sheet", menu); 
} 

function newSheet() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var templateSheet = ss.getActiveSheet(); 
    var sheet1 = ss.getSheetByName("Sheet1") 
     var getNames = sheet1.getRange("A2:A").getValues().filter(String).toString().split(","); 

    for (var i = 0; i < getNames.length; i++) { 
     var copy = ss.getSheetByName(getNames[i]); 
     if (copy) { 
      Logger.log("Sheet already exists"); 
     } else { 
      templateSheet.copyTo(ss).setName(getNames[i]); 
      ss.setActiveSheet(ss.getSheetByName(getNames[i])); 
      ss.moveActiveSheet(ss.getNumSheets()); 
     } 
    } 
} 
+0

嗨,詹姆斯!非常感谢你!它正是我想要的。 – viv227295

1

看看这个作品送给你。

function onOpen() { 
    var menu = [{name: "Add", functionName: "newSheet"}]; 
    SpreadsheetApp.getActiveSpreadsheet().addMenu("Sheet", menu); 
} 

function newSheet() 
{ 
    var sp = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheetnameobj = sp.getSheetByName("Sheet1"); 
    //You can place a for loop here, if you want to create multiple sheets 
    var newsheetname = sheetnameobj.getRange("A2").getValue();//Get Name of Your New Sheet From Column A of Sheet1 

    sp.insertSheet(newsheetname); 
} 
+0

Thanks Parag for your solution!简短而简单。虽然它只是从单元格A2中获取数据,但我所要求的是因为我不断更新列A的单元格,所以脚本应该牢记这一点。但无论如何,谢谢! – viv227295

+1

很高兴能有所帮助,我得到了你想从A列中获得多个价值的信息。这并不难,我给你一个工作方向 –

相关问题