Encontre logotipos de empresas com a macro ONLYOFFICE
Dados os muitos logotipos que existem, descobrir referências de logotipos pode ser um pouco complicado hoje em dia, podendo levar à confusão. Ainda assim, com macros ONLYOFFICE, você pode automatizar esse processo. Nesta postagem do blog mostraremos como criar uma macro que pode recuperar simultaneamente vários logotipos de uma API externa e inseri-los em sua planilha.
Accessando a API
Neste tutorial, utilizaremos o Logo API oferecido pela API Ninjas, uma plataforma online que fornece uma variedade de recursos e insights sobre APIs. Esta plataforma também oferece uma coleção de APIs gratuitas que os desenvolvedores podem incluir em seus projetos. Especificamente, a Logo API permite acesso a imagens de logotipos para uma ampla variedade de empresas.
Construindo a macro
Primeiro, direcionamos a planilha ativa:
// Get the active worksheet
var oWorksheet = Api.GetActiveSheet();
Então obtemos a seleção no documento. Os valores das células nesta seleção serão usados na solicitação da API:
var selectedRange = Api.GetSelection()
Depois disso adicionamos uma lógica que definiria títulos para os dados que serão inseridos no documento. Começamos criando um array que contém os nomes dos campos (“name”, “ticker”, “image”) e as letras das colunas:
// Define a mapping of values to insert into specific columns
var valuesToInsert = {
"name": "B",
"ticker": "C",
"image": "D"
};
Ao mapear colunas e valores, percorremos cada nome de campo no objetovaluesToInsert. Para cada campo, buscamos a célula correspondente e verificamos se a célula está vazia. Se a célula estiver vazia, o valor predefinido associado ao campo é inserido na célula usando o método 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);
}
Em seguida, usamos a função selectedRange.ForEach() para iterar em cada célula do intervalo selecionado. Para cada célula, ele busca o valor da célula. Se o valor existir, uma solicitação AJAX será feita à API. Em seguida, os dados de resposta são processados no retorno de chamada de sucesso:
// 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) {
}
Dentro do retorno de chamada de sucesso do AJAX, recuperamos a resposta da API. O código então itera pelos dados de resposta e preenche os dados recuperados em colunas específicas da planilha. A variável currentRow determina a linha a ser preenchida e as colunas correspondentes são preenchidas com dados. A função AutoFit é usada para ajustar as larguras das colunas com base nos dados preenchidos:
// 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);
}
Todo o código da macro é o seguinte:
(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);
}
});
}
});
})();
Agora vamos executar nossa macro e ver como funciona!
Esperamos que esta macro se torne rapidamente um recurso valioso em seu arsenal. A versatilidade e os recursos da API ONLYOFFICE criam aberturas significativas para personalizar e automatizar suas tarefas.
Enquanto você se aprofunda na elaboração de macros, não negligencie as possibilidades que a API ONLYOFFICE oferece. Se você tiver dúvidas ou ideias inovadoras, encorajamos você a compartilhá-las através dos comentários ou entrando em contato conosco. Seus insights são valiosos e estamos entusiasmados com o potencial de colaboração. Boa sorte em seus empreendimentos exploratórios!