In diesem Blogpost wird erklärt wie man mittels eines Buttons in einer Aufgabenliste automatisiert Aufgaben und Teilaufgaben anlegen kann.
Als erstes gehen wir über die Websiteinhalte auf “App hinzufügen”.
Nun wählen wir die Aufgaben aus und vergeben diesen einen Namen. In meinem Fall heissen Sie auch “Aufgaben”.
Nach erstellen der Aufgabenliste landen wir wieder auf der Seite der Websiteinhalte. Wir klicken nun in unsere Aufgabenliste.
Nun bearbeiten wir die Seite indem wir rechts oben neben dem Namen auf “Seite bearbeiten” klicken.
Um den Button mit dem Skript einzufügen, fügen wir einen Inhaltseditor ein.
Zuerst klicken wir auf Webpart hinzufügen (1), danach unter der Kategorie “Medien und Inhalt” (2) unter Webparts auf “Inhaltseditor” (3) und zum Schluss noch auf hinzufügen (4).
Als nächstes klicken wir in der Inhaltseditor um dort das Skript einzufügen
und dann in der Ribbonleiste auf “Quelle bearbeiten”.
Nun kannst du das nachfolgende Skript einfügen. Achte darauf, dass wenn du deiner Aufgabenliste einen anderen Namen gegeben hast, dass du diesen im Skript abänderst. (Zeile 5).
<script type="text/javascript" src="/_catalogs/masterpage/js/jquery-1.8.3.min.js"></script> <script type="text/javascript"> function newTask(){ var clientContext = new SP.ClientContext.get_current(); var oList = clientContext.get_web().get_lists().getByTitle('Aufgaben'); var itemCreationInfo = new SP.ListItemCreationInformation(); this.oListItem = oList.addItem(itemCreationInfo); oListItem.set_item('Title', 'Neuer MitarbeiterIn'); //English //oListItem.set_item('Title', 'New Employee'); oListItem.update(); clientContext.load(oListItem); clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded1), Function.createDelegate(this, this.onQueryFailed1)); } function onQuerySucceeded1() { alert('Hautptaufgabe erstellt, die ID lautet: ' + oListItem.get_id()); //English //alert('Task created. The ID is: ' + oListItem.get_id()); var aufgabenId = oListItem.get_id(); newSubTask(aufgabenId); } function onQueryFailed1(sender, args) { alert('Request failed. ' + args.get_message() + 'n' + args.get_stackTrace()); } function newSubTask(aufgabenId){ var clientContext = new SP.ClientContext.get_current(); var oList = clientContext.get_web().get_lists().getByTitle('Aufgaben'); var itemCreationInfo = new SP.ListItemCreationInformation(); this.oListItem = oList.addItem(itemCreationInfo); oListItem.set_item('Title', 'Mitarbeiter in SharePoint Access Group aufnehmen'); //English //oListItem.set_item('Title', 'Add the new user into the SharePoint Access Group'); oListItem.set_item('ParentID', aufgabenId); oListItem.update(); clientContext.load(oListItem); clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded2(aufgabenId)), Function.createDelegate(this, this.onQueryFailed2)); } function onQuerySucceeded2(aufgabenId) { alert('Teilvorgang erstellt, die ID lautet: ' + oListItem.get_id()); //English //alert('Subtask created. The ID is: ' + oListItem.get_id()); newSubTask2(aufgabenId); } function onQueryFailed2(sender, args) { alert('Request failed. ' + args.get_message() + 'n' + args.get_stackTrace()); } function newSubTask2(aufgabenId){ var clientContext = new SP.ClientContext.get_current(); var oList = clientContext.get_web().get_lists().getByTitle('Aufgaben'); var itemCreationInfo = new SP.ListItemCreationInformation(); this.oListItem = oList.addItem(itemCreationInfo); oListItem.set_item('Title', 'Mitarbeitertraining vereinbaren'); //English //oListItem.set_item('Title', 'Train the new user in SharePoint basics'); oListItem.set_item('ParentID', aufgabenId); oListItem.update(); clientContext.load(oListItem); clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded3), Function.createDelegate(this, this.onQueryFailed3)); } function onQuerySucceeded3() { alert('Teilvorgang 2 erstellt, die ID lautet: ' + oListItem.get_id()); //English //alert('Subtask two created. The ID is: ' + oListItem.get_id()); } function onQueryFailed3(sender, args) { alert('Request failed. ' + args.get_message() + 'n' + args.get_stackTrace()); } </script> <input id="Button1" type="button" value="Aufgabe: Neuer MitarbeiterIn" onclick="newTask()" />
Nach klicken auf “OK” in der HTML-Quelle des Inhaltseditors klicken noch in der Ribbonleiste unter Seite auf “Bearbeitung beenden”:
Nun hast du oberhalb der Timeline einen Button der dir automatisiert Aufgaben anlegt. In diesem Skript werden nach klicken des Buttons die Meldungen noch als alert ausgegeben. Dies kannst du natürlich auch im Code abändern.
Nach diesen alerts siehst du die neuen Aufgaben nachdem du die Seite aktualisiert hast.
Ich hoffe dir hat dieser Blogbeitrag gefallen. Falls du immer auf dem neuesten bleiben möchtest kannst du mir auch auf Facebook oder Twitter folgen.
Bei fragen gilt wie immer: Don’t be afraIT to ask!
2 responses to “Create task and subtask programmatically (de)”
Hallo,
vielen Dank für das Skript, es funktioniert zu 95% auch bei mir :-). Bei der Anlage des ersten Subtasks wird jedoch eine falsche ID ermittelt … es wird immer -1 ausgegeben. Meine JS-Kenntnisse sind leider nur sehr rudimentär und ich bekomme den richtigen Wert nicht übergeben … :-(.
Haben Sie eine Idee wo es dran liegen könnte?
Vielen Dank
Wolfgang Watzling
OK, Fehler gefunden … der zweite SubTask-Teil funktioniert einwandfrei …