前回に引き続き、VSCodeを利用してアドインを動かしていきましょう。
まずはワークスペースフォルダを追加しましょう。
ソース管理の横にあるリポジトリの初期化ボタンを押しましょう。
以下アドレスよりClone or downloadを選択し表示されるダイアログよりDownload ZIPでファイルをダウンロードし、ワークスペースに入れましょう。
https://github.com/OfficeDev/Outlook-Add-in-On-Send
ワークスペースに配置するとエクスプローラー上にこのアドインが表示されるようになります。
エクスプローラーを開いていくと、それぞれコードが記載されています。
例えば、送信時にメールのCCにアドレスをセットするには、app.jsのaddCCOnSendにアドレスを書き加えてみましょう。
また、一緒に入っているContoso Subject and CC Checker.xmlも書き換える必要があります。書き換える内容は、この機能をホストしているサーバー情報を記するのですが、この時点ではこの機能をホストしているサーバーはありません。Azure App Serviceを立ち上げるのが簡単なので、VSCode上から呼び出せるようにしてみましょう。
VSCodeには、拡張機能としてAzure App Service というものがあり、Azure上でサービスを簡単に起動させることができる機能が搭載されています。入れておくと、コードを書いてそのまま起動。というところまで一元で準備することができます。
インストールしてエクスプローラーより場所を追加しようとすると、デバイスのログイン画面が表示されます。アプリケーションが発行したコードを入力するように促されますので、VSCode上に表示されているコードを入力しましょう。
こんな感じに右下にコードが表示されます。
これでアプリのデプロイまで完了です。
Contoso Subject and CC Checker.xmlにこのサイトのURLを記述しておきます。
後はOutlookよりアドインを有効化する必要があります。
オプションからファイルの追加を選びこのXMLを選択します。
あとはインストールを押下するのみです。
ちなみにこのアドイン、既定の状態では送信時に機能が動作しないようになっているため、うまく動きません。
以下URLに記載のあるように、OnSendAddinsEnabledをオンにしたポリシーを用意し、ユーザーに設定しましょう。
Outlook アドインの送信時機能 | Microsoft Docs
以下コマンド例では、OWAOnSendAddinAllUserPolicyという名のポリシーにOnSendAddinsEnabledをセットして、mitomoha@.onmicrosoft.comにポリシーを割り当てています。
$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
Import-PSSession $Session
New-OWAMailboxPolicy OWAOnSendAddinAllUserPolicy
Set-OwaMailboxPolicy -Identity OWAOnSendAddinAllUserPolicy -OnSendAddinsEnabled:$true
Get-OWAMailboxPolicy OWAOnSendAddinAllUserPolicy
Get-User -Identity 'mitomoha@.onmicrosoft.com' |Set-CASMailbox -OwaMailboxPolicy OWAOnSendAddinAllUserPolicy
これでアドインが動作するようになりました。
以下のように、送信時に条件がそろうと、、、
自動的に送信がブロックされ、CCにメールアドレスが追加される動作が確認できました。
先ほどはAzure Appをサーバーとして準備しましたが、止めておくと以下のように通信ができなかったというエラーとなります。
残念ながらこの機能、Outlook on the Webでのみ動作し、スマホアプリなどでは動きません。
各種あるアプリで同一の動作が行われるようになると、かなり使い勝手が良いものになりそうなのですが、、、
この辺りはそのうちの改善に期待ですね!
音楽:エスケイプ