Importieren Sie Hyperlinks in Ihre Tabellenkalkulation mit dem ONLYOFFICE-Makro

20 September 2023By Vlad

Hyperlinks können die Ästhetik und Funktionalität Ihrer Tabellenkalkulationen erheblich verbessern und den Zugriff auf wichtige Ressourcen in Ihren Dokumenten erleichtern. In diesem Blogbeitrag führen wir Sie Schritt für Schritt durch die Erstellung eines Makros, das Hyperlinks importiert, indem es Linkdaten aus einem anderen Arbeitsblatt extrahiert.

Import hyperlinks into your spreadsheet with ONLYOFFICE macro

Erstellung des Makros

Zunächst initialisieren wir zwei Variablen oWorksheetA und oWorksheetB, die Arbeitsblätter mit den Namen Sheet1 und Sheet2 im Dokument darstellen. Außerdem erstellen wir zwei leere Arrays title und links, die zum Speichern von Daten aus Sheet1 verwendet werden sollen:

var oWorksheetA = Api.GetSheet("Sheet1");
var oWorksheetB = Api.GetSheet("Sheet2");
var rowIndex = 0;
var titles = [];
var links = [];

Eine while-Schleife durchläuft dann die Zeilen in Sheet1 (in diesem Fall bis zu 10 Zeilen). Innerhalb der Schleife werden die Werte aus den Zellen in den Spalten A und B abgerufen, wobei davon ausgegangen wird, dass Spalte A die Titel und Spalte B die Links enthält. Diese Werte werden dann zur späteren Verwendung in den Arrays Titel und Links gespeichert:

while (rowIndex < 10) {
    var titleCell = oWorksheetA.GetRangeByNumber(rowIndex, 0); // Assuming title is in column A
    var linkCell = oWorksheetA.GetRangeByNumber(rowIndex, 1); // Assuming link is in column B
    var title = titleCell.GetValue();
    var link = linkCell.GetValue();
    titles.push(title); // Store titles in an array
    links.push(link);   // Store links in an array
    rowIndex++; // Increment the row index for the next iteration
}

Dann zielen wir auf den ausgewählten Bereich in Sheet2 (oWorksheetB) und durchlaufen jede Zelle im ausgewählten Bereich mit der Methode ForEach. Für jede Zelle wird der Wert der Zelle abgerufen und geprüft, ob dieser Wert mit einem der im Array titles gespeicherten Titel übereinstimmt:

var rangeB = Api.GetSelection();
rangeB.ForEach(function (cell) {
    var cellValue = cell.GetValue();
    // Check if the cell value matches any of the titles from the array
    var index = titles.indexOf(cellValue);
});

Wenn eine Übereinstimmung gefunden wird, werden der entsprechende Titel und die Verknüpfung aus den Arrays title und links abgerufen. Außerdem wird die Adresse der aktuellen Zelle in Sheet2 mit cell.GetAddress ermittelt. Schließlich wird ein Hyperlink in Sheet2 mit dem abgerufenen Titel und Link gesetzt:

if (index !== -1) {
        var title = titles[index];
        var link = links[index];
        var address = cell.GetAddress(true, true, "xlA1", false);
        // Set the hyperlink in oWorksheetB
        oWorksheetB.SetHyperlink(address, link, "Api ONLYOFFICE", title);
    }

Das gesamte Makro:

var oWorksheetA = Api.GetSheet("Sheet1");
var oWorksheetB = Api.GetSheet("Sheet2");
var rowIndex = 0;
var titles = [];
var links = [];
while (rowIndex < 10) {
    var titleCell = oWorksheetA.GetRangeByNumber(rowIndex, 0); // Assuming title is in column A
    var linkCell = oWorksheetA.GetRangeByNumber(rowIndex, 1); // Assuming link is in column B
    var title = titleCell.GetValue();
    var link = linkCell.GetValue();
    titles.push(title); // Store titles in an array
    links.push(link);   // Store links in an array
    rowIndex++; // Increment the row index for the next iteration
}
var rangeB = Api.GetSelection();
rangeB.ForEach(function (cell) {
    var cellValue = cell.GetValue();
    // Check if the cell value matches any of the titles from the array
    var index = titles.indexOf(cellValue);
    if (index !== -1) {
        var title = titles[index];
        var link = links[index];
        var address = cell.GetAddress(true, true, "xlA1", false);
        // Set the hyperlink in oWorksheetB
        oWorksheetB.SetHyperlink(address, link, "Your Description", title);
    }
})

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

Wir hoffen sehr, dass sich dieses Makro als wertvolle Ergänzung zu Ihrem Toolkit erweist. Indem Sie ONLYOFFICE-Makros einsetzen, steigern Sie Ihre Produktivität und schaffen effiziente, automatisierte Lösungen.

Während Sie sich in die Makroerstellung vertiefen, sollten Sie die Möglichkeiten der ONLYOFFICE-API nicht verpassen. Wenn Sie Fragen oder innovative Ideen haben, teilen Sie diese uns mit durch Kommentare oder direkte Kommunikation. Wir freuen uns auf Ihre Anregungen und auf die Möglichkeit, mit Ihnen zusammenzuarbeiten. Viel Erfolg!