Office アドイン

Office用アプリではalertやconfirmが使えない?

JavaScriptでメッセージや確認ダイアログを表示する際には「alert」や「confirm」、「prompt」がよく使われますが、これらはOffice用アプリで使用できるのでしょうか?
簡単なサンプルコードでテストしてみます。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=Edge">
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
        <script src="https://az88874.vo.msecnd.net/api/1.0/office.js"></script>
        <script>
            Office.initialize = function(reason){
                $(document).ready(function(){
                    Office.context.document.addHandlerAsync(Office.EventType.DocumentSelectionChanged, document_SelectionChanged);
                });
            }
            function document_SelectionChanged(eventArgs) {
                $("#result").val(eventArgs.type);
                window.alert("aaa");
                window.confirm("bbb");
                window.prompt("ccc","ddd");
            }
        </script>
    </head>
    <body>
        <textarea id="result" rows="4" cols="30"></textarea>
    </body>
</html>

上記コードはSelectionChangedイベントを利用して選択が変更されたときに処理を行うものですが、動作を確認してみるとtextareaへの書き込みは行われるものの、それ以下のコードは実行されないことが分かります。
どうやらOffice用アプリではalertやconfirm、promptは使用できないようです。

といっても、下記コードのようにVBScriptを通してしまえばMsgBoxやInputBoxを呼び出すことができるので、ダイアログで簡単に動作を確認したい場合には下記のような方法がお薦めです。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=Edge">
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
        <script src="https://az88874.vo.msecnd.net/api/1.0/office.js"></script>
        <script>
            Office.initialize = function(reason){
                $(document).ready(function(){
                    Office.context.document.addHandlerAsync(Office.EventType.DocumentSelectionChanged, document_SelectionChanged);
                });
            }
            function document_SelectionChanged(eventArgs) {
                $("#result").val(eventArgs.type);
                msgBoxVbs("eee", 3 + 64, "fff");
                inputBoxVbs("ggg", "hhh", "iii");
            }
        </script>
        <script language="vbscript">
            Function msgBoxVbs(prompt, buttons, title)
                msgBoxVbs = MsgBox(prompt, buttons, title)
            End Function
            
            Function inputBoxVbs(prompt, title, default)
                inputBoxVbs = InputBox(prompt, title, default)
            End Function
        </script>
    </head>
    <body>
        <textarea id="result" rows="4" cols="30"></textarea>
    </body>
</html>

関連記事

  1. Office関連

    Office 2016で“ヤツ”を召喚してみた。

    4月1日にMicrosoft Office公式アカウント、MSOffi…

  2. Office関連

    Office 365 APIをVBAから呼び出す(3)

    前々回の記事でOffice 365とAzure ADの紐づけを、前回の…

  3. Office関連

    「最速攻略 Wordマクロ/VBA徹底入門」レビュー

    いつもお世話になっているExcel MVPの伊藤さんに9月20日発売予…

  4. Office関連

    MicrosoftのDictateアドインを試してみました。

    Microsoftがハンズフリー入力をサポートするOffice用(Wo…

  5. Office関連

    [Excel Services ECMAScript]タイマーでグラフを描画する。

    タイマーで特定のセルの値を増やしていき、それに合わせてグラフを描画して…

  6. Office関連

    Office 2013 オンラインヘルプのリンクを集めてみました。

    新機能を把握するためにはヘルプを見るのが一番早い、というわけでOffi…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP