Trouvez des logos d’entreprise avec la macro ONLYOFFICE
Compte tenu du grand nombre de logos existants, il peut être difficile de trouver les références d’un logo, ce qui peut prêter à confusion. Pourtant, avec les macros ONLYOFFICE, vous pouvez rendre ce processus automatique. Dans cet article, nous allons vous montrer comment créer une macro qui peut simultanément récupérer plusieurs logos à partir d’une API externe et les insérer dans votre feuille de calcul.
Accès à l’API
Dans ce tutoriel, nous utiliserons l’API Logo proposée par API Ninjas, une plateforme en ligne qui fournit une série de ressources et d’informations sur les API. Cette plateforme propose une collection d’API gratuites que les développeurs peuvent inclure dans leurs projets. Plus précisément, l’API Logo permet d’accéder aux images de logotypes d’un grand nombre d’entreprises.
Construction de la macro
Nous commençons par cibler la feuille active :
// Get the active worksheet
var oWorksheet = Api.GetActiveSheet();
Ensuite, nous obtenons la sélection sur le document. Les valeurs des cellules de cette sélection seront utilisées dans la requête API :
var selectedRange = Api.GetSelection()
Après cela, nous ajoutons une logique qui définit les titres des données à insérer dans le document. Nous commençons par créer un tableau contenant les noms des champs (“name”, “ticker”, “image”) et les lettres des colonnes :
// Define a mapping of values to insert into specific columns
var valuesToInsert = {
"name": "B",
"ticker": "C",
"image": "D"
};
Après avoir mis en correspondance les colonnes et les valeurs, nous parcourons en boucle chaque nom de champ dans l’objet valuesToInsert. Pour chaque champ, nous récupérons la cellule correspondante et vérifions si elle est vide. Si la cellule est vide, la valeur prédéfinie associée au champ est insérée dans la cellule à l’aide de la méthode oCell.SetValue() :
// Loop through the values to insert and populate empty cells
for (var value in valuesToInsert) {
var oCell = oWorksheet.GetRange(valuesToInsert[value] + "1");
if (!oCell.GetValue()) oCell.SetValue(value);
}
Nous utilisons la fonction selectedRange.ForEach() pour parcourir chaque cellule de la plage sélectionnée. Pour chaque cellule, elle récupère la valeur de la cellule. Si la valeur existe, une requête AJAX est envoyée à l’API. Les données de la réponse sont ensuite traitées dans la fonction de rappel “success” :
// Iterate through each cell in the selected range
selectedRange.ForEach(function (cell) {
var value = cell.GetValue();
if (value) {
// Make an AJAX request to an API to retrieve data based on the cell value
$.ajax({
method: 'GET',
url: 'https://api.api-ninjas.com/v1/logo?name=' + value,
headers: { 'X-Api-Key': 'yourAPIkey' },
contentType: 'application/json',
success: function(result) {
}
Dans le rappel AJAX “success“, nous récupérons la réponse de l’API. Le code parcourt ensuite les données de la réponse et remplit les données récupérées dans des colonnes spécifiques de la feuille de calcul. La variable currentRow détermine la ligne à remplir, et les colonnes correspondantes sont remplies de données. La fonction AutoFit est utilisée pour ajuster la largeur des colonnes en fonction des données renseignées :
// Iterate through the API response and populate data into specific columns
for (var i = 0; i < result.length; i++) {
var data = result[i];
var currentRow = cell.GetRow() + i - 1;
// Populate data into specific columns and adjust column width
oWorksheet.GetRangeByNumber(currentRow, 1).SetValue(data.name);
oWorksheet.GetRangeByNumber(currentRow, 1).AutoFit(false, true);
oWorksheet.GetRangeByNumber(currentRow, 2).SetValue(data.ticker);
oWorksheet.GetRangeByNumber(currentRow, 2).AutoFit(false, true);
oWorksheet.GetRangeByNumber(currentRow, 3).SetValue(data.image);
oWorksheet.GetRangeByNumber(currentRow, 3).AutoFit(false, true);
}
Le code macro complet est le suivant :
(function() {
// Get the active worksheet
var oWorksheet = Api.GetActiveSheet();
// Get the currently selected range of cells
var selectedRange = Api.GetSelection();
// Define a mapping of values to insert into specific columns
var valuesToInsert = {
"name": "B",
"ticker": "C",
"image": "D"
};
// Loop through the values to insert and populate empty cells
for (var value in valuesToInsert) {
var oCell = oWorksheet.GetRange(valuesToInsert[value] + "1");
if (!oCell.GetValue()) oCell.SetValue(value);
}
// Iterate through each cell in the selected range
selectedRange.ForEach(function (cell) {
var value = cell.GetValue();
if (value) {
// Make an AJAX request to an API to retrieve data based on the cell value
$.ajax({
method: 'GET',
url: 'https://api.api-ninjas.com/v1/logo?name=' + value,
headers: { 'X-Api-Key': 'yourAPIkey' },
contentType: 'application/json',
success: function(result) {
console.log(result);
// Iterate through the API response and populate data into specific columns
for (var i = 0; i < result.length; i++) {
var data = result[i];
var currentRow = cell.GetRow() + i - 1;
// Populate data into specific columns and adjust column width
oWorksheet.GetRangeByNumber(currentRow, 1).SetValue(data.name);
oWorksheet.GetRangeByNumber(currentRow, 1).AutoFit(false, true);
oWorksheet.GetRangeByNumber(currentRow, 2).SetValue(data.ticker);
oWorksheet.GetRangeByNumber(currentRow, 2).AutoFit(false, true);
oWorksheet.GetRangeByNumber(currentRow, 3).SetValue(data.image);
oWorksheet.GetRangeByNumber(currentRow, 3).AutoFit(false, true);
}
},
error: function ajaxError(jqXHR) {
console.error('Error: ', jqXHR.responseText);
}
});
}
});
})();
Maintenant, exécutons notre macro et voyons comment elle fonctionne !
Nous espérons que cette macro deviendra rapidement un atout précieux dans votre arsenal. La polyvalence et les capacités de l’API ONLYOFFICE créent des ouvertures significatives pour la personnalisation et l’automatisation de vos tâches.
Pendant que vous vous plongez dans l’élaboration de macros, ne négligez pas les possibilités offertes par l’API ONLYOFFICE. Si vous avez des questions ou des idées innovantes, nous vous encourageons à les partager dans les commentaires ou à nous contacter. Vos idées sont précieuses et nous sommes enthousiastes à l’idée de collaborer avec vous. Nous vous souhaitons bonne chance dans vos projets exploratoires !