个人中心

联系我们

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

新闻资讯

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

2024 年要尝试的 15 个实用 JavaScript 宏

原创
软件开发
来源:ONLYOFFICE
JavaScript
算法
Microsoft
office
API
excel
数据分析
2024-01-18
JavaScript
算法
Microsoft
office
API
excel
数据分析

微软Office有基于VBA的宏,而ONLYOFFICE则更进一步,有了基于JavaScript的宏,提供了更大的灵活性。在本文中,我们将展示ONLYOFFICE宏中的一些,这些宏是传统的基于VBA的宏的有力替代品。



什么是 JavaScript 宏?

宏是自动执行任务的强大工具。ONLYOFFICE使用JavaScript创建宏,涵盖文档、电子表格、演示文稿和OFORM编辑。这些 JavaScript 宏允许用户自动执行任务,增强文档功能,并根据自己的需要定制 ONLYOFFICE 应用程序。


为什么需要 VBA 宏的替代方案?

利用编写自定义 JavaScript 宏的能力,您可以实现自动化、交互性以及与外部系统的无缝集成:


自动化:JavaScript 宏使用户能够在文档中自动执行格式设置、数据操作和计算等任务。

交互性:宏可以响应用户操作或事件,使文档更具交互性。

自定义:用户可以根据自己的具体需求定制ONLYOFFICE应用程序的行为。

集成:JavaScript 宏允许与外部系统和服务集成,实现 ONLYOFFICE 与其他平台之间的数据交换和通信。

鉴于ONLYOFFICE宏使用JavaScript,除了其灵活性之外,JavaScript还是一种非常流行的语言,拥有一个充满活力的社区。我们有大量的教程,为如何使用 JavaScript 完成各种任务提供全面指导。此外,我们还提供了详细的文档,对您可以在 JavaScript 宏中使用的方法进行了清晰的解释。


Excel VBA 宏与 ONLYOFFICE JavaScript 替代工具的比较

高亮显示选中的重复内容

Excel VBA 宏如下:


Sub HighlightDuplicateValues()

Dim myRange As Range

Dim myCell As Range

Set myRange = Selection

For Each myCell In myRange

If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then

myCell.Interior.ColorIndex = 36

End If

Next myCell

End Sub


与 VBA 对应程序不同,我们的替代程序提供了更高级的功能,用独特的颜色突出显示重复值:


(function () 

{

    // Background color of cells with non-repeating values

    var whiteFill = Api.CreateColorFromRGB(255, 255, 255);

    // The current index of the color range

    var uniqueColorIndex = 0;

    // Color range to highlight duplicate values

    var uniqueColors = [Api.CreateColorFromRGB(255, 255, 0),

        Api.CreateColorFromRGB(204, 204, 255),

        Api.CreateColorFromRGB(0, 255, 0),

        Api.CreateColorFromRGB(0, 128, 128),

        Api.CreateColorFromRGB(192, 192, 192),

        Api.CreateColorFromRGB(255, 204, 0)];

    // Function to get color for duplicates

    function getColor() {

        // If you have chosen all the unique colors, then let's go from the beginning

        if (uniqueColorIndex === uniqueColors.length) {

            uniqueColorIndex = 0;

        }

        return uniqueColors[uniqueColorIndex++];

    }

    // Getting an active sheet

    var activeSheet = Api.ActiveSheet;

    // Getting selection on the active sheet

    var selection = activeSheet.Selection;

    // Map of values in cells with the duplicates number

    var mapValues = {};

    // All cells range

    var arrRanges = [];

    // Going through the selection

    selection.ForEach(function (range) {

        // Getting value from cell

        var value = range.GetValue();

        if (!mapValues.hasOwnProperty(value)) {

            mapValues[value] = 0;

        }

        mapValues[value] += 1;

        arrRanges.push(range);

    });

    var value;

    var mapColors = {};

    // We go through all the cells of the selection and setting the highlighting if this value is repeated more than 1 time

    for (var i = 0; i < arrRanges.length; ++i) {

        value = arrRanges[i].GetValue();

        if (mapValues[value] > 1) {

            if (!mapColors.hasOwnProperty(value)) {

                mapColors[value] = getColor();

            }

            arrRanges[i].SetFillColor(mapColors[value]);

        } else {

            arrRanges[i].SetFillColor(whiteFill);

        }

    }

})();



取消隐藏所有行和列

此 VBA 脚本可取消隐藏电子表格中的所有行和列:


Sub UnhideRowsColumns()

Columns.EntireColumn.Hidden = False

Rows.EntireRow.Hidden = False

End Sub


而 JavaScript 宏也可以做到这一点:


(function()

{

    var activeSheet = Api.ActiveSheet;

    var indexRowMax = 1048576;

    var n = 1;

    for (let i = 0; i < indexRowMax; i++) {

        activeSheet.GetRows(n).SetHidden(false);

        n++;

    }

    var newRange = activeSheet.GetRange("A1");

    newRange.SetValue("All the rows and columns are unhidden now");

})();



您还可以通过将该宏中的 SetHidden 参数设置为 true 来隐藏所有行和列:


(function()

{

    var activeSheet = Api.ActiveSheet;

    var indexRowMax = 1048576;

    var n = 1;

    for (let i = 0; i < indexRowMax; i++) {

        activeSheet.GetRows(n).SetHidden(true);

        n++;

    }

    var newRange = activeSheet.GetRange("A1");

    newRange.SetValue("All the rows and columns are hidden now");

})();


如果你需要更高级的功能,我们在另一篇博文中详细介绍了一个宏,它允许你隐藏/取消隐藏特定的行和列。


突出显示大于值

下面的 VBA 版本可以突出显示大于值:


Sub HighlightGreaterThanValues()

Dim i As Integer

i = InputBox("Enter Greater Than Value", "Enter Value")

Selection.FormatConditions.Delete

Selection.FormatConditions.Add Type:=xlCellValue, _

Operator:=xlGreater, Formula1:=i

Selection.FormatConditions(Selection.FormatConditions.Count).S

tFirstPriority

With Selection.FormatConditions(1)

.Font.Color = RGB(0, 0, 0)

.Interior.Color = RGB(31, 218, 154)

End With

End Sub


同样的任务可以通过 ONLYOFFICE JavaScript 宏来完成,甚至只需使用更少的代码行:


(function () 

{

    var activeSheet = Api.ActiveSheet;

    var selection = activeSheet.Selection;

    selection.ForEach(function (range) {

        var value = range.GetValue();

        if (value > 5) {

            range.SetFillColor(Api.CreateColorFromRGB(255, 255, 0));

        }

    });    

})();



尽管代码行数较少,但我们的替代方案提供了更好的通用性。例如,通过改变 if 语句的条件,我们可以


突出显示小于的值:


(function () 

{

    var activeSheet = Api.ActiveSheet;

    var selection = activeSheet.Selection;

    selection.ForEach(function (range) {

        var value = range.GetValue();

        if (value < 5) {

            range.SetFillColor(Api.CreateColorFromRGB(255, 255, 0));

        }

    });


突出显示负数:


(function () 

{

    var activeSheet = Api.ActiveSheet;

    var selection = activeSheet.Selection;

    selection.ForEach(function (range) {

        var value = range.GetValue();

        if (value < 0) {

            range.SetFillColor(Api.CreateColorFromRGB(255, 255, 0));

        }

    });

})();


高亮显示包含特定文本的单元格:


(function () 

{

    var activeSheet = Api.ActiveSheet;

    var selection = activeSheet.Selection;

    selection.ForEach(function (range) {

        var value = range.GetValue();

        if (value == 'text') {

            range.SetFillColor(Api.CreateColorFromRGB(255, 255, 0));

        }

    });

 })();


试用更多有用的 JavaScript 宏


1、为 ONLYOFFICE 电子表格中的选区添加索引的 JavaScript 宏

有时,默认索引无法满足需要。这就是我们省时的 JavaScript 宏的用武之地。它将整齐地索引选区中的所有行,使您的电子表格工作流程变得更加简单。

2、复制电子表格的 JavaScript 宏

编辑电子表格可能很棘手,尤其是在处理多个数据相似的电子表格时。为了简化这一过程,让我们创建一个 JavaScript 宏,将数据从一个电子表格复制到另一个电子表格,帮助您轻松处理大型电子表格。

3、将多个百度搜索结果插入电子表格的 JavaScript 宏

百度宏是一个多功能工具,旨在提高管理单个和多个搜索查询的效率。无论您的经验水平如何,它的用户友好型设计和适应性都会使您的工具包增色不少。

4、将超链接导入电子表格的 JavaScript 宏

超链接可以大大增强电子表格的美观性和功能性,使您可以轻松访问文档中的重要资源。这个 JavaScript 宏通过从另一个电子表格中提取链接数据来导入超链接。

5、查找公司徽标的 JavaScript 宏

由于徽标众多,如今查找徽标参考资料可能有点棘手,有可能导致混淆。然而,有了 ONLYOFFICE 宏,您就可以自动完成这一过程。这个 JavaScript 宏可以同时从外部 API 获取多个徽标原型,并将它们插入电子表格中。

6、生成基于性别的个性化问候语的 JavaScript 宏

在交流中,正确称呼他人至关重要,因为这体现了尊重、包容性和专业性。此 JavaScript 宏利用 Genderize.io API 生成正确的个性化问候语。

7、跟踪 Shopify 订单的 JavaScript 宏

在当今时代,电子商务已成为打破地域壁垒、促进源源不断的收入的重要工具。因此,管理和跟踪订单信息是成功商业战略的重要组成部分。该 JavaScript 宏可从 Shopify 检索订单数据并将其插入电子表格。

8、将 CSV 和 TXT 数据导入电子表格的 JavaScript 宏

以 CSV 格式存储表格数据在很多方面都非常实用,因此这种类型的文件非常受欢迎。ONLYOFFICE Docs 允许导入本地 CSV 和 TXT 文件。本 JavaScript 宏将帮助您解决导入远程 CSV 和 TXT 文件的问题。

9、监测空气质量数据的 JavaScript 宏

ONLYOFFICE 宏让我们的生活更轻松。它们帮助我们自动执行日常任务并处理大量数据。通过此 JavaScript 宏,您可以实时显示当前的空气质量数据。

10、用 OpenAI 数据填充单元格的 JavaScript 宏

人工智能技术已经取得了长足的进步,并成为一种可以使我们的工作流程自动化的宝贵工具。此 JavaScript 宏可使用从 OpenAI 获取的数据填充电子表格。

11、分析电子表格数据的 JavaScript 宏

虽然 ChatGPT 4 现在提供了更强大的功能,但一些用户仍然更喜欢 ChatGPT 3.5,因为它的令牌成本更低。然而,ChatGPT 3.5 缺乏文件上传功能,导致用户无法分析数据表。本 JavaScript 宏克服了这一限制,使您能够分析电子表格。

12、删除选区中重复内容的 JavaScript 宏

此 JavaScript 宏可删除电子表格选区中的重复内容。它可帮助您删除重复条目,通过简单高效的解决方案使您的数据干净准确,从而增强您的整体电子表格使用体验。


ONLYOFFICE宏是灵活而强大的工具,不仅能模仿VBA宏的功能,还能超越它们。


我们还鼓励大家利用我们的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