Zuweisung einer individuellen ID für OFORM-Dateien

25 Januar 2023By Vlad

Mit ONLYOFFICE-Lösungen können Sie ausfüllbare Formulare einfach erstellen und damit arbeiten. In unserem letzten Beitrag haben wir Ihnen ein Makro gezeigt, das CSV/TXT-Daten in ein ausfüllbares Kombinationsfeld umwandelt.

Dieses Mal werden wir die elektronische Dokumentation besser organisieren, indem wir ein Makro erstellen, das einem ausfüllbaren Formular eine eindeutige ID zuweist.

Assign a unique id to OFORMS

Voraussetzungen

In unserem neuen Projekt werden wir ein ähnliches Konzept wie bei dem oben erwähnten Makro anwenden.

Der Makrocode lautet wie folgt:

   function LoadFile() {
        $.ajax({
            url: 'file:///C:/Users/LEOPARD/Desktop/Book1.csv',
            dataType: 'text',
        }).done(successFunction);
    } 
    function successFunction(data) {
    
        var arrAllRows = data.split("\n");
    
        var oComboBoxForm = Api.CreateComboBoxForm({ "key": "Personal information", "tip": "Choose your country", "required": true, "placeholder": "Country", "editable": false, "autoFit": false, "items": arrAllRows });
        var oParagraph = Api.CreateParagraph();
        oParagraph.AddElement(oComboBoxForm);
        oDocument.InsertContent([oParagraph]);
    }
    LoadFile();

Mit einem neuen Makro werden wir auch die Methode InsertContent einbinden. Sie fügt ein Element genau an der Stelle ein, an der sich der Mauszeiger befindet. Diesmal ist der eingefügte Inhalt jedoch unterschiedlich.

Erstellung des Makros

Um diesen Inhalt zu erstellen, fügen wir die Funktion generate hinzu. Dort erstellen wir die Variable key und setzen sie auf blank. Später wird sie den generierten Wert speichern. Außerdem fügen wir die die Variable data hinzu. Sie enthält Groß- und Kleinbuchstaben und Zahlen. Das sind die Bausteine für unsere eindeutige ID:

function generate () {
    let key = '';
    const data = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 
            'abcdefghijklmnopqrstuvwxyz0123456789';
};

Dann fügen wir eine for-Schleife hinzu, die 12 Iterationen durchläuft. Jede Iteration gibt einen eindeutigen Wert zurück. 12 Iterationen ergeben also 12 eindeutige Zeichen für die ID. Dann verwenden wir die Methode Math.random, um bei jeder Iteration einen eindeutigen Index zu erhalten. Danach verwenden wir diesen Index mit der Methode charAt, um ein eindeutiges Zeichen aus der Datenvariablen abzurufen. Wir weisen das Ergebnis der Schlüsselvariablen zu und geben es zur weiteren Verwendung zurück. Dann rufen wir die Funktion generate auf und weisen sie der Variablen id zu:

   for (let i = 1; i <= 12; i++) {
        let index = Math.floor(Math.random()
                    * data.length + 1);
          
        key += data.charAt(index)
    }
      
    return key;
};
 const id = generate();

Nun müssen wir den generierten Inhalt in unser Dokument einfügen. Zunächst wird das aktive Formular ausgewählt:

var oDocument = Api.GetDocument();

Danach erstellen wir einen Absatz und fügen dazu ein Textelement hinzu. Wir verpacken unseren generierten Inhalt in dieses Element, indem wir die Variable id in den Parametern übergeben:

var oParagraph = Api.CreateParagraph();
oParagraph.AddText(id);

Dann fügen wir es ein. Die Methode InsertContent bettet ein Element direkt an der Cursorposition ein. Wir legen auch die Eigenschaft KeepTextOnly fest. Indem wir sie auf true setzen, können wir mögliche Probleme bei der Positionierung verhindern:

oDocument.InsertContent([oParagraph], { "KeepTextOnly": true });

Der gesamte Makrocode lautet wie folgt:

function generate () {
    let key = '';
    const data = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 
            'abcdefghijklmnopqrstuvwxyz0123456789';
      
    for (let i = 1; i <= 12; i++) {
        let index = Math.floor(Math.random()
                    * data.length + 1);
          
        key += data.charAt(index)
    }
      
    return key;
};
const id = generate();
var oDocument = Api.GetDocument();
var oParagraph = Api.CreateParagraph();
oParagraph.AddText(id);
oDocument.InsertContent([oParagraph], { "KeepTextOnly": true })

Führen wir nun unser Makro aus und sehen wir, wie es funktioniert!

Wir hoffen, dass Sie dieses Makro nützlich finden und es in Ihren Arbeitsablauf integrieren werden. ONLYOFFICE-Makros sind äußerst vielseitig und ermöglichen es dem Benutzer, Dokumente auf verschiedene Weise zu bearbeiten. Dieses Makro ist nur eines der vielen Beispiele dafür, was durch die Implementierung unserer API-Methoden erreicht werden kann.

Wir möchten Sie ermutigen, zu experimentieren und Ihre eigenen Projekte in Angriff zu nehmen. Wenn Sie Fragen haben oder Ihre Ideen mit uns teilen möchten, stehen wir Ihnen gerne zur Verfügung. Wir sind offen für Diskussionen und Zusammenarbeit. Wir wünschen Ihnen viel Erfolg bei Ihren Projekten!