Importe hiperlinks para sua planilha com a macro ONLYOFFICE

20 setembro 2023By Klaibson

Os hiperlinks podem melhorar muito a estética e a funcionalidade de suas planilhas, facilitando o acesso a recursos cruciais em seus documentos. Nesta postagem do blog, orientaremos você passo a passo na criação de uma macro que importa hiperlinks extraindo dados de links de outra planilha.

Importe hiperlinks para sua planilha com a macro ONLYOFFICE

Construindo a macro

Primeiro inicializamos duas variáveis oWorksheetA e oWorksheetB, representando planilhas denominadas Sheet1 e Sheet2 no documento. Também criamos dois títulos e links de arrays vazios que serão usados para armazenar dados da Sheet1:

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

Um loop while itera pelas linhas na Sheet1 (até 10 linhas neste caso). Dentro do loop, ele recupera os valores das células nas colunas A e B, assumindo que a coluna A contém títulos e a coluna B contém links. Esses valores são então armazenados nas matrizes de títulos e links para uso posterior:

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
}

Em seguida, direcionamos o intervalo selecionado na Sheet2 (oWorksheetB) e iteramos em cada célula do intervalo selecionado usando o método ForEach. Para cada célula, ele recupera o valor da célula e verifica se esse valor corresponde a algum dos títulos armazenados na matriz de títulos:

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

Se uma correspondência for encontrada, ele recupera o título e o link correspondentes das matrizes de títulos e links. Ele também obtém o endereço da célula atual na Sheet2 usando cell.GetAddress. Por fim, ele define um hiperlink na Sheet2 usando o título e o link recuperados:

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

A macro inteira é a seguinte:

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

Vamos executar nossa macro e ver como funciona!

Esperamos sinceramente que esta macro seja um recurso valioso em seu kit de ferramentas. Ao adotar as macros do ONLYOFFICE, você se capacita com produtividade aprimorada e soluções automatizadas e eficientes.

Ao mergulhar na criação de macros, não perca as oportunidades apresentadas pela API ONLYOFFICE. Se você tiver dúvidas ou ideias inovadoras, convidamos você a compartilhar conosco, seja por meio de comentários ou comunicação direta. Acolhemos com entusiasmo a sua contribuição e esperamos a possibilidade de colaborar com você. Boa sorte em seus empreendimentos exploratórios!