个人中心

联系我们

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

新闻资讯

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

使用 ONLYOFFICE 宏生成基于性别的个性化问候语

原创
软件开发
来源:ONLYOFFICE
文档格式
文档处理
word
office
Microsoft
文件处理
文档管理
文档组建
API
网络通讯
2024-02-08
文档格式
文档处理
word
office
Microsoft
文件处理
文档管理
文档组建
API
网络通讯

在交流中,正确称呼他人至关重要,因为这体现了尊重、包容性和专业性。在本文中,我们将向您展示如何在 ONLYOFFICE Docs 中构建一个宏,利用 Genderize.io API 生成正确的个性化问候语。



关于性别化

Genderize.io是一项API服务,可预测与姓名相关的性别。它为开发人员提供了一种将性别识别功能集成到其应用程序或脚本中的简便方法。将姓名作为参数发送给 Genderize API,用户就会收到包含预测性别和其他信息(如预测的置信度)的响应。Genderize.io简化了确定与给定姓名相关的性别的过程。


构建宏

我们首先初始化 oWorksheet 变量,该变量包含活动工作表的引用。有了对活动工作表的访问权限,我们就可以操作电子表格中的数据:

const oWorksheet = Api.GetActiveSheet()


接下来,我们将 ROW 变量初始化为 2,代表 A 列数据的起始行:

 let ROW = 2


为了处理每一行,我们使用 checkRow 函数。它的主要目的是遍历每一行并处理处理逻辑。在 checkRow 函数中,我们使用 oWorksheet.GetRange(A${ROW}).GetText() 语句检索当前行的名称值。这将获取当前行 A 列单元格的文本值:


function checkRow() {
        const name = oWorksheet.GetRange(`A${ROW}`).GetText()
}


如果检索到的名称为空,则表示数据结束。在这种情况下,我们会调用 reload 函数,该函数负责重新加载工作表。另一方面,如果检索到的名称不为空,我们将继续调用 makeRequest 函数,并将名称作为参数传递:


   function checkRow() {
        const name = oWorksheet.GetRange(`A${ROW}`).GetText()
        if (name === '') {
            return reload()
        }
        makeRequest(name)
    }


makeRequest 函数的目的是向 Genderize API 发送 AJAX 请求:


function makeRequest(name) {
        $.ajax({
            url: `https://api.genderize.io?name=${name}`,
            dataType: 'json',
        }).done(successFunction)
    }


从 Genderize API 收到响应后,就会调用 successFunction。在 successFunction 中,我们首先检查性别确定的概率是否大于 0.9。如果大于 0.9,我们就会根据 API 响应中的性别值分配适当的标题:


function successFunction(data) {
        if (data.probability > 0.9) {
            let title = data.gender === 'male' ? 'Mr' : 'Ms' 
        }
    }


为了生成个性化问候语,我们使用了 oWorksheet.GetRange(B${ROW}).SetValue(...) 方法。这样我们就可以设置当前行 B 列的值。成功处理当前行后,我们会递增 ROW 变量,然后再次调用 checkRow 函数。这种递归方法可确保我们继续遍历随后的每一行,直到数据结束:


function successFunction(data) {
        if (data.probability > 0.9) {
            let title = data.gender === 'male' ? 'Mr' : 'Ms' 
            oWorksheet.GetRange(`B${ROW}`).SetValue(`Dear ${title} ${data.name}!`)
        }
        ROW++
        checkRow()
    }


一旦检测到数据结束,我们就会调用 reload 函数。该函数的目的是重新加载工作表,触发所有公式的重新计算。为此,我们使用 setInterval 定期执行 Api.asc_calculate(Asc.c_oAscCalculateType.All)函数,重新计算工作表中的所有公式:


    function reload() {
        let reload = setInterval(function(){
            Api.asc_calculate(Asc.c_oAscCalculateType.All);
        })    
    }
})()


整个宏代码如下:


(function()
{
    const oWorksheet = Api.GetActiveSheet()
    let ROW = 2
    checkRow()
    
    // Recursively request each name until 'A' column value is empty
    //
    // checkName -> makeRequest -> successFunction (ROW + 1) ->
    // checkName -> ... -> checkName -> name is empty -> reload
    function checkRow() {
        const name = oWorksheet.GetRange(`A${ROW}`).GetText()
        if (name === '') {
            return reload()
        }
        makeRequest(name)
    }
    
    // Request
    function makeRequest(name) {
        $.ajax({
            url: `https://api.genderize.io?name=${name}`,
            dataType: 'json',
        }).done(successFunction)
    }
    // Response
    function successFunction(data) {
        if (data.probability > 0.9) {
            let title = data.gender === 'male' ? 'Mr' : 'Ms' 
            oWorksheet.GetRange(`B${ROW}`).SetValue(`Dear ${title} ${data.name}!`)
        }
        ROW++
        checkRow()
    }
    
    // Sheet has to be reloaded on changes
    function reload() {
        let reload = setInterval(function(){
            Api.asc_calculate(Asc.c_oAscCalculateType.All);
        })    
    }
})()


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


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


我们希望该宏能帮助您简化邮寄程序,使您能够专注于通信工作流程的其他重要方面。通过使用宏,您有机会释放 ONLYOFFICE 的全部潜能,提高您的工作效率。


我们还鼓励您继续探索ONLYOFFICE中宏的可能性。随着对脚本的深入了解,您可以创建自己的宏来自动执行重复性任务,提高工作效率,并根据您的具体需求定制您的文档。如果您有任何问题或想法,请随时留言或联系我们。我们愿意倾听您的想法,并渴望与您合作。祝您在探索过程中一切顺利!


联系我们

周一至周日 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