2017-01-19 6 views
0

Ich habe ein Blatt, das eine Vorlage (KundJobbTemplate) ist. Jedes Mal, wenn der Benutzer eine Zelle aktualisiert (F1), sollte eine Kopie des Vorlagenblatts (KundJobbTemplate) mit dem Namen "Kund_xxxx: Jobb_xxxx" erstellt werden.Falscher Name auf Blatt onEdit

Dies funktioniert das erste Mal. Wenn Sie das neu erstellte Blatt "Kund_xxxx: Jobb_xxxx" nicht manuell umbenennen und ein neues Blatt erstellen, indem Sie die Zelle F1 im Vorlagenblatt (KundJobbTemplate) aktualisieren, erhält das neue Blatt anstelle von "Kopie von Kund_xxxx: Jobb_xxxx" den Namen "Kopie von KundJobbTemplate" ".

So wie kann ich ein neues Blatt onEdit erstellen (Benutzer eine Zelle aktualisieren) und jedes Mal, wenn die Kopie der Vorlage Blatt „KundJobbTemplate“ wird den Namen bekommen „Kund_xxxx: Jobb_xxxx“ und wenn Blatt bereits es existieren einen Namen geben „Kopie von Kund_xxxx: Jobb_xxxx“ usw.

Dies ist mein Code:

function onEdit(event) 
{ 
    var myNewSheetName = "Kund_xxxx:Jobb_xxxx"; 
    var changedCell= event.source.getActiveRange().getA1Notation(); 
    if (changedCell == 'F1') { 
     var ss = SpreadsheetApp.getActiveSpreadsheet(); 
     var sheet = ss.getSheetByName('KundJobbMall').copyTo(ss); 
     SpreadsheetApp.flush(); // Utilities.sleep(2000); 
     sheet.setName(myNewSheetName); 
     ss.setActiveSheet(sheet); 
     } 
} 

Antwort

1

das Problem ist, dass Sie versuchen, das neue Blatt das gleiche wie eine bestehende Blatt zu nennen, die einen Fehler gibt. Versuchen Sie, eine zufällige Zeichenfolge am Ende hinzufügen:

function onEdit(event) 
{ 
    var randomString = (new Date%9e6).toString(36); 
    var myNewSheetName = "Kund_xxxx:Jobb_xxxx"; 
    var changedCell= event.source.getActiveRange().getA1Notation(); 
    if (changedCell == 'A1') { 
     var ss = SpreadsheetApp.getActiveSpreadsheet(); 
     var sheet = ss.getSheetByName('KundJobbMall').copyTo(ss).setName(myNewSheetName + " - " + randomString); 
     ss.setActiveSheet(sheet); 
     } 
} 

Sie jede beliebige Zeichenfolge verwenden können, über var Zufall ist nur ein Beispiel.

+0

Thx, das hat es geschafft :)! – martin

+0

Benutzt nr Blätter als eindeutigen String: 'var nrOfSheets = SpreadsheetApp.getActiveSpreadsheet(). GetNumSheets(); var randomString = nrOfSheets.toString(); ' – martin

Verwandte Themen