个人中心

联系我们

搜索
搜索 登录 免费注册
界面美化
业务优化
开发工具
图像管理
文档管理
Parasoft

新闻资讯

关注工具软件产品最新动态,了解软件开发行业新趋势。

使用 ONLYOFFICE 宏查找公司 logo 徽标

原创
软件开发
来源:ONLYOFFICE
excel
文档管理
文档处理
文件处理
2024-02-07
excel
文档管理
文档处理
文件处理

如今,logo 徽标种类繁多,查找徽标参考可能有点棘手,有可能导致混淆。然而,有了 ONLYOFFICE 宏,您就可以自动完成这一过程。在本文中,我们将向您展示如何创建一个宏,该宏可以同时从外部 API 获取多个徽标原型,并将其插入电子表格。



访问 API

在本教程中,我们将使用 API Ninjas 提供的 Logo API。API Ninjas 是一个在线平台,提供一系列有关 API 的资源和见解。该平台还提供一系列免费 API,开发人员可将其纳入自己的项目。具体来说,徽标 API 允许访问各种公司的徽标图像。


构建宏

首先,我们以活动工作表为目标:


// Get the active worksheet
    var oWorksheet = Api.GetActiveSheet();



然后,我们获取文档上的选区。该选区中单元格的值将用于 API 请求:


var selectedRange = Api.GetSelection()



然后,我们添加逻辑,为要插入文档的数据设置标题。首先,我们创建一个包含字段名称("name"、"ticker"、"image")和列字母的数组:


  // Define a mapping of values to insert into specific columns
    var valuesToInsert = {
        "name": "B",
        "ticker": "C",
        "image": "D"
    };



在映射列和值后,我们循环查看 valuesToInsert 对象中的每个字段名称。对于每个字段,我们都会获取相应的单元格,并检查该单元格是否为空。如果单元格为空,则使用 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);
    }



然后,我们使用 selectedRange.ForEach() 函数遍历选定区域中的每个单元格。对于每个单元格,它都会获取该单元格的值。如果该值存在,就会向 API 发出 AJAX 请求。然后在成功回调中处理响应数据:


// 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) {
}



在 AJAX 成功回调中,我们检索 API 响应。然后,代码会遍历响应数据,并将检索到的数据填充到工作表的特定列中。currentRow 变量决定要填充的行,相应的列则填充数据。AutoFit 函数用于根据填充的数据调整列宽:


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


整个宏代码如下:


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


现在,让我们运行宏,看看它是如何工作的!


点击以上图片免费观看视频 ⬆


我们希望这个宏能迅速成为您的宝贵财富。ONLYOFFICE API 的通用性和功能为定制和自动执行任务创造了巨大的空间。


在您深入研究宏制作的同时,不要忽视ONLYOFFICE API所提供的各种可能性。如果您有任何问题或创新想法,我们鼓励您通过评论或与我们联系来与我们分享。您的见解很有价值,我们对合作的潜力感到兴奋。祝您在探索过程中好运!


联系我们

周一至周日 8:00-23:00

免费热线

023-62585653

张经理:13082556879

罗经理:17558866126

许经理:13057566525

开发外包

ERP-一体化

小程序

企业微信客服

版权所有:重庆庚乾信息科技有限公司 ©2025 Gengqian Information Technology Co., Ltd. 渝ICP备2022008063号-2 渝公网安备50010702505508

版权所有:重庆庚乾信息科技有限公司

©2025 Gengqian Information Technology Co., Ltd. 渝ICP备2022008063号-2 渝公网安备50010702505508