Importez des liens hypertextes dans votre feuille de calcul avec la macro ONLYOFFICE

4 octobre 2023By Vlad

Les liens hypertextes peuvent considérablement améliorer l’esthétique et la fonctionnalité de vos feuilles de calcul, en facilitant l’accès à des ressources cruciales dans vos documents. Dans cet article, nous vous aiderons pas à pas à créer une macro qui importe des liens hypertextes en extrayant les données de liens d’une autre feuille de calcul.

Import hyperlinks into your spreadsheet with ONLYOFFICE macro

Construction de la macro

Tout d’abord, nous initialisons deux variables oWorksheetA et oWorksheetB, qui représentent les feuilles de calcul Sheet1 et Sheet2 du document. Nous créons également deux tableaux vides, titres et liens, qui seront utilisés pour stocker les données de Sheet1 :

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

Une boucle while parcourt ensuite les lignes de Sheet1 (jusqu’à 10 lignes dans ce cas). À l’intérieur de la boucle, elle récupère les valeurs des cellules des colonnes A et B, en supposant que la colonne A contient les titres et la colonne B les liens. Ces valeurs sont ensuite stockées dans les tableaux titres et liens en vue d’une utilisation ultérieure :

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
}

Nous ciblons ensuite la plage sélectionnée dans Sheet2 (oWorksheetB) et parcourons chaque cellule de la plage sélectionnée à l’aide de la méthode ForEach. Pour chaque cellule, elle récupère la valeur de la cellule et vérifie si cette valeur correspond à l’un des titres stockés dans le tableau des titres :

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);
});

Si une correspondance est trouvée, elle récupère le titre et le lien correspondants dans les tableaux titres et liens. Il obtient également l’adresse de la cellule actuelle dans Sheet2 à l’aide de cell.GetAddress. Enfin, il définit un lien hypertexte dans Sheet2 en utilisant le titre et le lien récupérés :

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);
    }

La macro complète est la suivante :

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);
    }
})

Exécutons notre macro et voyons comment elle fonctionne !

Nous espérons sincèrement que cette macro sera un atout précieux dans votre boîte à outils. En adoptant les macros ONLYOFFICE, vous vous donnez les moyens d’améliorer votre productivité et de mettre en place des solutions efficaces et automatisées.

En vous plongeant dans la création de macros, ne manquez pas les opportunités offertes par l’API ONLYOFFICE. Si vous avez des questions ou des idées innovantes, nous vous invitons à les partager avec nous, que ce soit par le biais de commentaires ou d’une communication directe. Nous sommes impatients de recevoir votre contribution et nous nous réjouissons de la possibilité de collaborer avec vous. Nous vous souhaitons bonne chance dans vos projets exploratoires !