Ich habe ein Skript, das ein neues Blatt mit einem Namen basierend auf Monat, wie Oktober 2017, automatisch jeden neuen Monat erstellt. Aber jetzt möchte ich einen Buttom haben, wo ich neue Blätter mit der gleichen Struktur erstellen kann, mit Namen basierend auf dem MMM-JJJJ. Mein erstes Skript erstellt nur dann ein neues Blatt, wenn sich der Monat ändert, aber jetzt möchte ich es erstellen können, wenn ich es für notwendig halte, indem ich diesen Knopf drücke. Das Erstellen eines Buttons ist kein Problem.Erstellen Sie ein neues Blatt mit einem Namen basierend auf dem nächsten Monat
Also, wenn vor dem Blattname auf dem folgenden Code basiert,
function checkSheetName() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetName = formatDate(); // load the current 'Month-Year'
try {
ss.setActiveSheet(ss.getSheetByName(sheetName)); // try to set 'sheetName' as active sheet
} catch (e) { // if returns error,
createNewMonthSheet(); // creates a new sheet
}
function createNewMonthSheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetName = formatDate(); // load the current 'Month-Year'
ss.insertSheet(sheetName, 2); // creates a new sheet on the left side, after 2 existing sheets
}
function formatDate() {
var monthNames = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
var monthNumber = Utilities.formatDate(new Date(), 'GMT+12:00', "M");
var yearNumber = Utilities.formatDate(new Date(), 'GMT+12:00', "yyyy");
return monthNames[monthNumber-1]+'-'+yearNumber;
}
jetzt muss der Code den Blattnamen als Referenz für den neuen Namen, das Datum zu erhöhen und einen echten Kalender respektiert Wenn also der aktuelle Blattname Dez-2017 lautet, wird auf der Schaltfläche ein neues Blatt namens Jan-2018 erstellt. Es ist also nicht mehr nötig, wie mein vorheriger Code mit dem neuen Date-Befehl zu tun zu haben.
begann ich einen neuen Code, aber ich weiß nicht, wie die var nameOfNextMonth zu erstellen:
function createNewSheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var currentMonth = ss.getActiveSheet().getName();
var nameOfNextMonth = **[currentMonth+1]**;
ss.setActiveSheet(ss.getSheetByName("template"));
var newSheet = ss.duplicateActiveSheet();
newSheet.activate();
ss.moveActiveSheet(0);
newSheet.setName(nameOfNextMonth);
}
das Sinn machen Is? Kann mir jemand eine Idee geben, wie ich vorgehen soll? Dank
Hey Parag Jadhav, danke. Es funktioniert gut! –
@DanielSian Froh, um Hilfe zu sein :) Bitte akzeptieren Sie es als Antwort, wenn es für Sie arbeitet. –
Wie kann ich es tun? –