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>

[Office用アプリ]Microsoft Translator APIを利用して選択文字列を翻訳する(クロスドメイン対応)。前のページ

PowerPoint用のOffice用アプリ次のページ

関連記事

  1. Office関連

    Excel 2016でマップグラフを作成する。

    12月6日、Office Insider向けに、Office 2016…

  2. Office関連

    「クイックアクセスツールバーからPowerPointマクロを実行するアドイン」のコード

    2年ほど前に書いたPowerPointマクロの記事「クイックアクセスツ…

  3. Office関連

    「いちばんやさしいExcel VBAの教本」レビュー

    VBAの学習者であれば一度は見たことがあるであろう、超有名老舗サイト「…

  4. Office関連

    Office 365 unified APIをVBAから呼び出す

    前回の記事で、VBAからOffice 365 APIを呼び出す手順につ…

  5. Excel

    Google TTSで文字列を読み上げるマクロ

    2012/02/09 追記:関連記事・Google翻訳…

  6. Office関連

    [Office]WordやPowerPointで画像の画質が悪くなった時の対処方法

    WordやPowerPointで画像を貼りつけたときやファイルを保存し…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP