Word文档的加载项内容

时间:2018-03-10 12:17:29

标签: javascript office-js

我是从word文档中获取数据并将其设置为我的javascript的全局用途。但我使用以下代码

得到此错误
  

您无法将正文内容设置为全局变量

var bodyText;
getData();

function getData() {
    Word.run(function (context) {

        var body = context.document.body;

        context.load(body, 'text');

        return context.sync().then(function () {
            bodyText = body.text;
        });
    });

    console.log(bodyText);
}

console.log(bodyText);

1 个答案:

答案 0 :(得分:2)

您的第一个console.log是无法访问的代码,因为该方法在到达该行之前返回。另一个问题是Word.run是异步的,并且在调用第二个console.log时没有完成,所以第二个返回undefined。以下代码有效:

var bodyText;
getData();

function getData() {
    return Word.run(function (context) {
        var body = context.document.body;

        context.load(body, 'text');

        return context.sync()
            .then(function () {
                bodyText = body.text;
                console.log(bodyText); //Completes second and works
            });
    });
   // console.log(bodyText); // Unreachable code
}
console.log(bodyText); // Completes first and returns undefined

您可以通过将第二个console.log置于与then的调用链接的getData方法中来控制同步:

var bodyText;
getData().then(function () {
    console.log(bodyText); // Completes second and works
});

function getData() {
    return Word.run(function (context) {
        var body = context.document.body; 

        context.load(body, 'text');

        return context.sync()
            .then(function () {
                bodyText = body.text;
                console.log(bodyText); //Completes first and works
            });
    });
}