2017-10-16 4 views
0

Ich suche nach einem Skript, das eine Registerkarte oder ein Blatt auf einer täglichen Basis duplizieren und dieses Blatt mit dem heutigen Datum umbenennen kann.Doppelte Blätter täglich

Ich bin sicher, das ist möglich, aber ich kann die Antwort nirgends finden.
Das Skript, das ich bisher habe, ist unten, aber es funktioniert nicht und ich kann nicht den richtigen Tweek bekommen, um es zu arbeiten.

function CreateNewPulseSheet() { 

    // The code below makes a duplicate of the active sheet 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("master do not use"); 
    SpreadsheetApp .getSheetByName().duplicateActiveSheet(); 

    // The code below will rename the active sheet to a date based on cell M1 of the source spreadsheet 

var myValue = SpreadsheetApp.getActiveSheet().getRange("M1").getDisplayValue(); 
SpreadsheetApp.getActiveSpreadsheet().renameActiveSheet(myValue); 

} 
+0

Mögliches Duplikat von [Google Skript zum Kopieren und Umbenennen eines Arbeitsblatts und Name basiert auf einer Zellreferenz] (https://stackoverflow.com/questions/23472440/google-script-to-copy-and-rename-a -sheet-and-name-ist-basiert-auf-einer-zelle-referenz) –

Antwort

0

Dies ist fast identisch mit der Frage in Rubén's Kommentar oben verknüpft. Aber um die Frage zu beantworten, was mit diesem Code nicht stimmt, ist die Zeile, in der Sie das Blatt duplizieren, das Problem. Sie haben nach SpreadsheetApp ein Leerzeichen und rufen dann getSheetByName() auf, das ein Sheet-Objekt zurückgibt. Das Sheet-Objekt hat keine Methode duplicateActiveSheet(). Was Sie tun möchten, ist dies:

function CreateNewPulseSheet() { 
    // The code below makes a duplicate of the active sheet 
    SpreadsheetApp.getActiveSpreadsheet().getSheetByName("master do not use").activate(); //getSheetByName returns a Sheet, but doesn't set it as active 
    SpreadsheetApp.getActiveSpreadsheet.duplicateActiveSheet(); /Duplicate makes a copy and sets it as the active sheet 

    // The code below will rename the active sheet to a date based on cell M1 of the source spreadsheet 
    var myValue = SpreadsheetApp.getActiveSheet().getRange("M1").getDisplayValue(); 
    SpreadsheetApp.getActiveSpreadsheet().renameActiveSheet(myValue); 
} 

ich das Blatt Variable nahm, weil man es nie verwiesen, nachdem er erklärt.

+0

Danke, ich habe deine Bearbeitung benutzt und ich arbeite perfekt, –