3

最初にロードした後、最初にログインページにリダイレクトし、ログイン後にアドインにリダイレクトする必要がある単語アドインを作成しようとしています。アドインは独自のWebサーバーでホストされています。ただし、リダイレクト後、「Word is undefined」というエラーが表示されます。アドインは Word 内で実行されており、Office.initialize と Word.run を呼び出しています。アドインの Web サーバーではなく localhost を指すようにアドインを実行すると、正常に動作しますが、Web サーバーから実行するとエラーが発生します。

エラーが発生したページのコードは次のようになります。

(function () {
"use strict";

Office.initialize = function (reason) {
    $(document).ready(function () {

        try {
            doSomethingInWord();
        } catch (e) {
            console.log(e);
        }
    }
}
})();

私の「doSomethingInWord」関数は次のようになります。

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

        return context.sync()
            .then(function () {
                    body.clear();
                    return context.sync().then(function () {
                        console.log('Did Something in word');
                    })
        }).catch(errorHandler);
    }
}
4

1 に答える 1

0

あなたが見ている問題は、認証ダイアログにリダイレクトして戻ってくることで、何らかの形で Office.js を再トリガーしていないことだと思います。

Visual Studio を使用せずに Word で機能するとおっしゃっていて驚いています。それらがどのように関連するかはわかりません。ただし、どちらの場合も、このフローで他の問題に遭遇すると思います。特に、アドインが で実行される Excel Online ではiframe(また、OAuth ダイアログでは での実行が許可されない傾向がありますiframes)。

最善の策は、アドインを「通常どおり」ロードし、Office.context.ui.displayDialogAsyncAPI を使用して OAuth ログインを別のダイアログに表示することだと思います。この間、アドインに「ログインのダイアログ入力を待機中」と表示させます。次に、OAuth ログインが完了したらダイアログ メッセージを親に戻し、必要な情報 (トークンなど) を渡します。

于 2016-07-20T16:45:38.480 に答える