0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Outlook Webアドインプロジェクトを作ってみる(続き)

0
Posted at

Outlook Webアドインプロジェクトを作ってみる」で作ったOutlook Webアドインのタスクペインを拡張してメールのヘッダーをいろいろ確認するアドインにします。#自分の忘備録16

Webアドインプロジェクトの中を見てみる

  1. Yeomanジェネレーターで作成したOutlook WebアドインMailChkAddinの最初のソース構造は以下のようになっています。
MailChkAddin\
  manifest.xml         Webアドインマニフェストファイル
  webpack.config.js    使用するjs/html/cssモジュール情報ファイル
  assets\
    icon-*.png         アイコンファイル(大きさ6種類)
  src\
    commands\
      commands.html    必要なjsスクリプト指定など
      commands.js      アクションイベントのコールバック関数を追加する
    taskpane\
      taskpane.html    タスクペインの画面を作成する
      taskpane.js      タスクペインイベントのコールバック関数を追加する
      taskpane.css     タスクペインの見た目を設定する
    node_modules\      Node.jsモジュール
  1. MailChkAddinにメールヘッダー情報を表示するためにはタスクペインだけでは少々スペース的に狭いので、情報表示用のダイアログUIを使用します。
    ダイアログUIは、MicrosoftのLearn「チュートリアル: メッセージ作成 Outlook アドインのビルド」の「最初の実行エクスペリエンスを実装する」を参考にして追加します。
  • メールヘッダー情報を表示するためのダイアログUI(ディレクトリsettings以下のファイルdialog.*)を追加
  • タスクペインに情報選択のボタンを追加
  • その他、もろもろの追加変更、使用しないファイルの削除(ディレクトリcommands以下のファイルcommands.*)
MailChkAddin\
  manifest.xml         (Webアドインマニフェストファイル)
  webpack.config.js    settingsのdialog.*の設定を追加変更、commandsの設定削除
  assets\
    icon-*.png         MailChkAddinのアイコンに変更
  src\
    settings\
      dialog.html      ダイアログUIの画面を作成する
      dialog.js        ダイアログUIの内容表示関数を追加する
      dialog.css       ダイアログUIの見た目を設定する
    taskpane\
      taskpane.html    タスクペインにメールヘッダ情報表示のボタンの追加
      taskpane.js      タスクペインイベントのコールバック関数を追加
      taskpane.css     (タスクペインの見た目を設定する)
    node_modules\      Node.jsモジュール

簡易Webアドインサーバを作成する

今回作成したWebアドインはサーバサイドの処理が無いので、単純なWebサーバにすることが出来ます。
npm run dev-serverで起動したサーバでも構わないのですが、通常のWebサーバにWebアドインをホストする例を示します。
ただしオレオレ証明書(自己署名証明書)ではないHTTPSサーバにする必要があります。
そのためにwebpackサーバ起動時に作成された証明書ファイルを使用します。
その証明書ファイルは以下のディレクトリに格納されています。

%USERPROFILE%\.office-addin-dev-certs
  ca.crt           ルートCA証明書(Windowsの証明書ストアにインストールされている)
  localhost.crt    Webサーバ証明書
  localhost.key    秘密鍵
(mailchk_svr.py - python 簡易Webアドインサーバ例)

import os
import sys
import http.server
import ssl

userprofile = os.environ['USERPROFILE']
certfile = f'{userprofile}/.office-addin-dev-certs/localhost.crt'
keyfile = f'{userprofile}/.office-addin-dev-certs/localhost.key'
host = '0.0.0.0'
port = 8443
docroot = '.'


class MyHandler(http.server.SimpleHTTPRequestHandler):  #ConnectionResetErrorエラーが出た時のメッセージ抑制(これは無くてもいいかも)
    def handle_one_request(self):
        try:
            super().handle_one_request()
        except ConnectionResetError:
            print("ConnectionResetError")


def run_svr():
    os.chdir(docroot)

    handler = MyHandler  #http.server.SimpleHTTPRequestHandler
    httpd = http.server.HTTPServer((host, port), handler)

    context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
    context.load_cert_chain(certfile=certfile, keyfile=keyfile)
    httpd.socket = context.wrap_socket(httpd.socket, server_side=True)

    print(f"server={host}:{port} docroot={os.path.abspath(docroot)}")

    try:
        httpd.serve_forever()

    except KeyboardInterrupt:
        httpd.server_close()
        sys.exit(0)

if __name__ == '__main__':
    run_svr()

簡易WebアドインサーバでWebアドインを使用する

証明書ファイルはデフォルトで有効期限が1ヶ月で作成されます。
以下のコマンドで有効期限が変更できます。

(証明書作成例)
cd MailChkAddin
node_modules\.bin\office-addin-dev-certs uninstall             ルートCA証明書が既にインストールされているのでアンインストールする
node_modules\.bin\office-addin-dev-certs install --days 365    新しい証明書を作成・CA証明書インストールする(ここでは有効期限を365日にしている)

ビルド版のWebアドインを作成します。
それに伴ってmanifest.xmlの「localhost:3000」を「localhost:8443/dist」にしたマニフェストファイルmanifest_svr.xmlを作成します。

(ビルド版Webアドイン作成例)
npm run build

python mailchk_svr.py  簡易Webアドインサーバ起動(pythonインストールが前提)

簡易Webアドインサーバ起動して、Outlookでマニフェストファイルmanifest_svr.xmlを読み込むと、Webアドインが起動します(pythonのWindows Firewall設定が出るかも知れませんがローカルなので無視)。

OutlookでのWebアドインMailChkAddinの見た目

Outlookの右上にアドインのリボンボタン(「Show Task Pane」のみ)が追加されます。
そのリボンボタンを押すとメールビューにタスクペインが表示されます(ダークモードで表示)。

Outlook-classic-addin1.png Outlook-classic-addin2.png

タスクペインのInformationをクリックすると、InformationのダイアログUIが表示されます。

Outlook-classic-addin3.png

簡易Webアドインサーバの実行の様子。

mailchk_svr.png

最終的なWebアドインプロジェクトの中身

最終的なソース構造は以下のようになっています。

MailChkAddin\
  manifest_svr.xml     Webアドインマニフェストファイル(ビルド版)
  dist\                Webアドインソース(ビルド版)
    *.js,*.cssなど
    assets\
     icon-*.png
  mailchk_svr.py       python 簡易Webアドインサーバ

  manifest.xml         (ここ以下は開発・デバッグ用)
  webpack.config.js
  assets\
    icon-*.png
  src\
    settings\
      dialog.html
      dialog.js
      dialog.css
    taskpane\
      taskpane.html
      taskpane.js
      taskpane.css
    node_modules\

作成したWebアドインMailChkAddin(gokabo-043 / MailChkAddin)は、初めてのGitHubにあたふたしながらあげてみました:cold_sweat: 宜しかったらお試しください。

参考にしたサイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?