2017-06-05 43 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列中獲得多個價值的信息。這並不難,我給你一個工作方向 –

相關問題