Office 365 ライブラリを使用して、グローバル オブジェクトOfficeを介してアプリケーションに公開されている Outlook 電子メール コンテキストにアクセスする組み込みアプリケーションを作成しています。
私はすでに次のようなHTMLページにスクリプトURLを含めたJavaScriptアプリケーションを作成しました:
<script type="text/javascript" src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"></script>
以下のようなES6 JavaScript関数でコンテキストにアクセスした後:
Office.initialize = function (reason) {
$(document).ready(function () {
Office.context.mailbox.addHandlerAsync(Office.EventType.ItemChanged, callbackfunction);
});
};
scala JSでも同じことをしたいです。
そのために、上記の方法でhtmlにOffice jsライブラリを含めました。
次のような Office オブジェクトにアクセスしようとした後:
@js.native
@JSGlobal
object Office extends js.Any {
def initialize(f: String => Unit):js.Any = js.native
}
この Office オブジェクトを呼び出すと、エラーがスローされます。
def callback = (reason:String) => {
println(s"reason called in callback function => $reason")
}
Office.initialize(callback)
scala JSでofficeオブジェクトをインスタンス化してアクセスする方法は?
エラー :
VM3981 playground-fastopt-bundle.js:4078 Uncaught TypeError: $g.Office.initialize is not a function
at HTMLDocument.<anonymous> (VM3981 playground-fastopt-bundle.js:4078)
at mightThrow (VM4209 playground-fastopt-bundle.js:25770)
at process (VM4209 playground-fastopt-bundle.js:25838)
初期化は Office オブジェクトでは使用できません。実行時に関数をロードする必要があります。エラーメッセージ :
Office.initialize 関数に初期化コードを追加します。
コードの要点: https://gist.github.com/rajeevprasanna/8d4f193bc328f2c2d48e113960fb25a6