2024 年值得尝试的 15 个实用 JavaScript 宏

2023年12月28日作者: Mona

虽然 Microsoft Office 具有基于 VBA 的宏,但 ONLYOFFICE 更进一步提供基于 JavaScript 的宏,提供了更大的灵活性。在这篇文章中,我们将展示众多 ONLYOFFICE 宏中的一部分,它们可作为传统的基于 VBA 的宏替代方案。

2024 年值得尝试的 15 个实用的 JavaScript 宏

什么是 JavaScript 宏?

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

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

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

  • 自动化:JavaScript 宏使用户能够自动执行文档中的格式化、数据操作和计算等任务。
  • 交互性:宏可以通过响应用户操作或事件来使文档更具交互性。
  • 定制:用户可以根据自己的具体需求定制ONLYOFFICE应用程序的行为。
  • 集成:JavaScript宏允许与外部系统和服务集成,实现ONLYOFFICE和其他平台之间的数据交换和通信。

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

Excel VBA 宏与 ONLYOFFICE JavaScript 替代方案对比

突出显示所选内容中的重复项

VBA Excel 宏如下:

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

2024 年值得尝试的 15 个实用的 JavaScript 宏

取消隐藏所有行和列

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

2024 年值得尝试的 15 个实用的 JavaScript 宏
还可以通过在此宏中将 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));
        }
    });    
})();

2024 年值得尝试的 15 个实用的 JavaScript 宏

尽管代码行数较少,但我们的替代方案提供了更好的多功能性。例如,通过更改 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 宏的用武之。它将整齐地索引您选择的所有行,使电子表格工作流程变得更加简单。
  2. 复制电子表格
    编辑电子表格可能很棘手,尤其是在处理具有相似数据的多个电子表格时。为了简化这一过程,我们可以创建一个 JavaScript 宏,将数据从一个电子表格复制到另一个电子表格,轻松处理大型电子表格。
  3. 将多个百度搜索结果插入电子表格
    百度宏是一种多功能工具,旨在提高管理单个和多个搜索查询的效率。无论您的经验水平如何,其用户友好的设计和适应性都使其成为一个实用的工具。
  4. 将超链接导入电子表格
    超链接可以极大地增强电子表格的美观性和功能性,让您可以轻松访问文档中的重要资源。此JavaScript 宏通过从另一个电子表格中提取链接数据来导入超链接。
  5. 查找公司logo
    考虑到logo众多,如今发现logo引用可能有点棘手,可能会导致混乱。然而,使用 ONLYOFFICE 宏,您可以使此过程自动化。此 JavaScript 宏可以同时从外部 API 检索多个标识并将它们插入到您的电子表格中。
  6. 生成基于性别的个性化问候语
    正确称呼他人对于沟通至关重要,因为它表现出尊重、包容性和专业精神。此 JavaScript 宏利用 Genderize.io API 生成适当的个性化问候语。
  7. 跟踪 Shopify 上的订单
    在当今时代,电子商务已成为打破地理障碍并促进源源不断的收入的宝贵工具。因此,管理和跟踪订单信息是成功业务战略的重要组成部分。此 JavaScript 宏从 Shopify 检索订单数据并将其插入到电子表格中。
  8. 将 CSV 和 TXT 数据导入电子表格
    以 CSV 格式存储表格数据在很多方面都非常实用,这使得这种类型的文件非常受欢迎。ONLYOFFICE 文档允许导入本地 CSV 和 TXT 文件。此 JavaScript 宏将帮助您处理导入远程 CSV 和 TXT 文件的问题。
  9. 监测空气质量数据
    ONLYOFFICE 宏让我们的生活更轻松。它们帮助我们自动化日常任务并处理大量数据。这个 JavaScript 宏可以实时显示当前的空气质量数据。
  10. 使用 OpenAI 数据填充单元格
    AI 技术取得了重大进步,并成为可以自动化我们工作流程的有价值的工具。此 JavaScript 宏使用 OpenAI 获得的数据填充电子表格。
  11. 分析电子表格数据
    虽然 ChatGPT 4 现在提供增强的功能,但一些用户仍然更喜欢 ChatGPT 3.5,因为它的令牌成本较低。然而,ChatGPT 3.5缺乏文件上传功能,导致用户无法分析数据表。此 JavaScript 宏克服了这一限制,能够分析电子表格。
  12. 删除所选内容中重复项
    JavaScript 宏从电子表格选择中删除重复项。它可以帮助您消除重复的条目,通过简单高效的解决方案使您的数据干净、准确,从而增强您的整体电子表格体验。

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

欢迎利用我们的 ONLYOFFICE API 并创建自己的宏。如果您有任何问题或想法,请随时与我们联系、讨论和合作。