Office365 在OfficeJS中,可以检索绑定对象的范围吗?

Office365 在OfficeJS中,可以检索绑定对象的范围吗?,office365,office-js,Office365,Office Js,以Word Online为目标,但Excel/PPT的任何指针也会有所帮助 本质上,是否可以将绑定对象中的文本视为一个范围?因此,能够选择所有内容,并将插入符号移动到开头/结尾 我设想代码会有以下效果: Office.select(“myBindingID”, function error(){}).getAsRange().select(“End”); 特定于主机的Office 2016+API浪潮与常见的2013 API之间存在差异 在Excel中,绑定和来自公共API集的所有内容都将公开

以Word Online为目标,但Excel/PPT的任何指针也会有所帮助

本质上,是否可以将绑定对象中的文本视为一个范围?因此,能够选择所有内容,并将插入符号移动到开头/结尾

我设想代码会有以下效果:

Office.select(“myBindingID”, function error(){}).getAsRange().select(“End”);

特定于主机的Office 2016+API浪潮与常见的2013 API之间存在差异

在Excel中,绑定和来自公共API集的所有内容都将公开给新OM,并与OM的其他方面(例如范围)连接。因此,你完全可以做到:

    await Excel.run(async (context) => {
        let binding = context.workbook.bindings.getItem("TestBinding");
        let range = binding.getRange();
        range.load("address");
        range.select();

        await context.sync();

        OfficeHelpers.UI.notify("Binding range address is " + range.address);
    });
但是,Word在特定于Word的API中似乎不提供绑定支持。如果您想更加确定,您可能需要问一个单独的Stackoverflow问题,比如WordApi Office 2016+是否支持绑定

对于Excel,您可以通过最近启动的Script Lab工具,在五次点击中尝试上述代码片段的扩展版本。只需免费安装Script Lab加载项,然后在导航菜单中选择导入,并使用以下要点URL:。看

更新:

关于@codex关于是否可能将Office 2013方法addFromPromptAsync与新的Office 2016 API浪潮相结合的问题:是的。您可以将调用嵌套到2013回调中,尽管我个人更喜欢将其包装在承诺中,如下所示,请参见代码的上半部分,然后使用Excel.run来运行与我之前使用的相同的新API:

    await new Promise((resolve, reject) => {
        Office.context.document.bindings.addFromPromptAsync(
            Office.BindingType.Matrix,
            { id: "TestBinding" },
            (result) => {
                if (result.status === Office.AsyncResultStatus.Succeeded) {
                    resolve();
                } else {
                    reject();
                }
            }
        )
    })

    await Excel.run(async (context) => {
        let binding = context.workbook.bindings.getItem("TestBinding");
        let range = binding.getRange();
        range.load("address");
        range.select();

        await context.sync();

        OfficeHelpers.UI.notify("Binding range address is " + range.address);
    });
您可以使用Script Lab试用它,与上面的说明相同,请访问


PS:如果您不熟悉使用承诺包装回调,那么在使用Office.JS构建Office加载项一书中,有一章专门介绍JS/TS和承诺入门——包括专门关于创建新承诺的章节。免责声明,我是该书的作者;但我确实认为读者会从中发现很多价值,无论是对于开始使用JS/TS/Promise概念,还是对于本书的内容——关于构成Office 2016 API浪潮的核心概念。

是否可以使用addFromPromptAsync的绑定做同样的事情?我很难用该数据绑定方法复制它,因为生成的绑定类型为Office.BindingType.Text,并且似乎无法访问诸如getRange之类的方法。@MichaelZlatkovsky Microsoft是否有办法从Word中的TextBinding获取范围?我不确定。如果没有一个明显的word API,请作为单独的堆栈溢出问题提问