OfficeJs页眉内容控件

时间:2017-03-01 18:55:10

标签: office-js

我试图获取标题的内容控件,但我无法获取它们。 我最终使用了ooxml但是有点痛苦。

function getContenControlHeader(tag) {

    // Run a batch operation against the Word object model.
    Word.run(function (context) {

        // Create a proxy sectionsCollection object.
        var mySections = context.document.sections;

        // Queue a commmand to load the sections.
        context.load(mySections, 'body/style');

        return context.sync().then(function () {

            var myHeader = mySections.items[0].getHeader('primary');
            return context.sync().then(function () {

                var contentControl = myHeader.contentControls.getByTag(tag);

                // Queue a command to load the text property for a content control.
                context.load(contentControl, 'text');

                // Synchronize the document state by executing the queued commands, and return a promise to indicate task completion.
                return context.sync().then(function () {
                        console.log(contentControl.items[0].text);
                });
            });
        });
    });
}

此代码段不起作用,返回的列表为空。文档正文中用于内容控件的相同代码段就像魅力一样。

1 个答案:

答案 0 :(得分:0)

我在Word及其工作中的最新公开版本(16.7766)中尝试了您的代码,只要我提供有效的代码即可。可能不言而喻但是: 一个。请检查标题中是否存在带有您提供给getByTag的标记的内容控件。

它仍然不起作用请提供更多信息: 一个。你在Windows,在线,Mac上测试吗? 湾编号。

我还建议您捕获一个异常,以查看可能发生的更多详细信息,检查我添加到您的示例中的处理程序:



function getContenControlHeader(tag) {

    // Run a batch operation against the Word object model.
    Word.run(function (context) {

        // Create a proxy sectionsCollection object.
        var mySections = context.document.sections;

        // Queue a commmand to load the sections.
        context.load(mySections, 'body/style');

        return context.sync().then(function () {

            var myHeader = mySections.items[0].getHeader('primary');
            return context.sync().then(function () {

                var contentControl = myHeader.contentControls.getByTag("sample");

                // Queue a command to load the text property for a content control.
                context.load(contentControl, 'text');

                // Synchronize the document state by executing the queued commands, and return a promise to indicate task completion.
                return context.sync().then(function () {
                    console.log(contentControl.items[0].text);
                });
            });
        });
    })
        .catch(function(e){
            console.log(e.message);
        }   ) 
}




谢谢!