Microsoft Teamsという最後発のチャットアプリ、無償で公開もされているので誰でも利用することが可能なのですが、一体どれだけシェアあるのか・・・コロナの影響で在宅勤務が強制的にスタートした中では、1200万人ほどユーザが増えたようです。Googleはこのジャンルは迷走しているので、ちょっと残念な結果になってると思います(MeetだChatだ、さらにはDuoやらAlloだと増やし、GMail統合から外しておいて、最近またMeetがGmailに統合されたりと)。

さて、このTeamsですがMicrosoft Graph APIからも投稿が可能ですし、Incoming WebhookPower Automate、外部サービスからの通知や他のアプリケーションからの通知、サーバーからの通知などをチャンネルや個人宛に飛ばす事が可能です。しかし、肝心のこの機能を殺してるアレな大企業があったりするわけで。

これらAPIやWebhookが使えないとなると最後に残るのが「メールで飛ばす」方法があります。他にもアプリで使う場合のURI Handler(URL Scheme)やPower Automateを使っての、メッセージを飛ばす方法もまとめてみました。

難易度:


メールでTeamsに投稿する

チャンネルのメールアドレスを取得する

メールを送ることでTeamsの参加者に自動的に通知を一斉配信が可能です。チーム毎のメアドの取得方法は以下の通り。

  1. メールアドレスを取得したいチームを開く
  2. 各チャンネルの右にある「」をクリック
  3. メールアドレスを取得をクリック(xxxx.xxxx.onmicrosoft.com@apac.teams.ms)といったようなアドレスが取得できる
  4. コピーをすればOK。このメアド宛にメールを送るだけ。

※添付ファイルをつけてメールを送ると、Teamsのファイルタブ内にファイルが格納されます。

図:メールアドレスの取得はとても簡単

制限を掛ける

デフォルトの状態ですと、メールアドレスを知っていれば誰でも投稿が出来てしまいます。そこで、以下の制限を掛けてあげると良いでしょう。

  1. ​メールアドレスを取得の画面の詳細設定をクリックする
  2. このチームのメンバーのみならば、チームメンバー以外は投稿出来ません。
  3. 外部の人も許可するならば、次のドメインのメールアドレスのみ(例:foobar.co.jp)を設定すると良い。カンマ区切りで複数登録可能。

図:誰でも投稿できるのはちょっとよろしくない

使い所

本来、SlackやTeamsは、チャットでだけ使うようなアプリケーションではありません。しかし、アレな大企業ではそこを制限してしまっており、利用価値がSkypeと変わらない(むしろ、一般的なアプリじゃないので、外部とやり取りする上で、相手にTeamsインストールを要求するという・・・)ので、大変残念な事になっています。
しかし、今回の機能を使う事によって、以下のような使い方が可能になります。
  1. 集約先をメールボックスではなく、目的別のteamsのチャンネルにすることが可能になる。
  2. メールのCCに加えることで、重要と思う内容を、メールではなくTeamsに残すことが可能になる。
  3. VBAやNode.jsといったプログラムから利用することで、Outlookを介してメールをおくって、チャンネルに通知が可能になる。
  4. 3.に伴い、複数のチャンネルに対して、自動的に大量に通知を連続して送ることも可能(他のウェブサービスからのメール通知をメールではなくTeamsにすることができる)

図:実際にメールで投稿してみた

Power Automateとの連携技

OutlookからTeamsへ転送

脱メールの為の仕組みとしてTeamsを入れているのに、一向にメールが減らない。メールボックスに何でもかんでも来る結果、メールフィルタで対応しきれなくなり、ついには仕事を取りこぼす、忘れる、そして誤ってそのままスルーする。結果、小さなミスが大きなクレームとなって帰ってくるわけです。これを少し解消する為に、特定のメールの条件に合致したものは、Teamsにそのまま自動で投げてしまいましょう。

Microsoft365のOutlookで自動応答でも紹介したテクニックです。

  1. Power Automateを起動する
  2. マイフローをクリックする
  3. 上にある「+新規」をクリックする
  4. 自動から作成を今回はクリックします。
  5. フローに名前をつけて、フローのトリガーではメールと検索し、「新しいメールが届いた時(V3)」を選びます。
  6. 作成ボタンをクリックする
  7. ここで条件判定をさせる為に、「制御(条件)」というものを追加します。
  8. 条件では、「差出人」はなく「開始」というものになります。また、「件名」や「本文」というものを使って、「特定の文字が含まれているか?」といった判定も非常に効果的です。
  9. 「はい」の場合だけを作ります。
  10. アクションの追加をクリックして、Teamsと検索。メッセージを投稿する(V3)を選択します。
  11. チームを選びます。
  12. チャネルを選びます。
  13. メッセージ本文を記述します。本文を書かずにメールの内容の本文をそのまんま追加することも可能です。

図:メールの内容をそのままTeamsに転送可能

Teamsの投稿内容をExcelファイルに記録する

社内外で結構問い合わせのある内容が「Teamsのチャンネルに投稿された内容を取り出せませんか?」というテーマ。投稿内容をデータとしてアーカイブし、例えばヒヤリハットの報告をTeamsにさせて纏めるであったりとか、投稿内容から傾向を分析するなどなど。Microsoft Graph APIを使えば過去のメッセージもすべて取得できるのですが、いかんせん構築が大変です。そこで今回は、Power Automateでノーコードでこれを実現します。(新規メッセージのみしか現在はまだ取得できないので、全てを取得したい場合、Graph APIを使って取得するしか方法がありません)

※Hangoutの場合チャット内容はGMailに残るのでGASから内容を取得が容易に出来ます。なお、Graph APIを使ってガッツリチャットログを取得するものは、Google Apps Scriptで作ってみました。

Google Apps ScriptとMicrosoft Graph APIの連携 – Teamsログ取得編

最も簡単なパターンの作り方は以下の通りになります。

  1. Teamsのチャンネルに入り、「+」ボタンをクリックする
  2. ドキュメントライブラリを選択する
  3. Sharepoint側で既に用意されているドキュメントライブラリの一覧が出てくるので、どれか選択する
  4. これで、Teamsチャンネルにドキュメントライブラリがドッキングされます。
  5. 次に、このライブラリにxlsxファイルをアップロードしますが、データ構造は「テーブル」で予め作っておく必要があります。素のxlsxでは書き込みが出来ません。
  6. アップロードされたファイルはTeams上からはロックされて削除出来ません。Sharepointで開くで開いた場所であれば削除が可能です。
  7. Power Automateを開きます。
  8. 左サイドパネルから「作成」⇒自動フローを選択
  9. 適当なフロー名をつけて、フローのトリガーはチャンネルにメッセージが追加されたときを選択します。
  10. チームでは「チーム名」がドロップダウンで出てくるので、選択。続いてその中にあるチャンネルも同様に選択します。
  11. 新しいステップを追加する
  12. excelで検索し、表に行を追加を選択します。
  13. 場所はドロップダウンで出てくる、4.のドキュメントライブラリがあるGroupを選択します。sharepointも直接選択可能
  14. ドキュメントライブラリは「ドキュメント」を選択
  15. ファイルはその中にアップロードした、先程のxlsxが出てくるので、それを選択します。
  16. テーブルは、予めxlsxに設定しておいたテーブルのテーブル名が出てくるので、それを選択します(名前つけてないとテーブル1とかがデフォルト)
  17. xlsxの各カラムが出てきます。クリックするとそこにTeamsの何の項目を書き込むか?を選べるので、追加していく。結構細かくデータが取れます。
  18. 保存を押して、テストを実行。Teamsのチャンネルにメッセージを投稿して、xlsxファイルに書き込まれればOK(タイムラグがありますので注意
  19. レスをした場合が記録する手段を現在探索中です。これができれば完璧なのですが・・・(誰かがレスをしたらというアクションが追加されれば実現できるんだけれどねぇ)

※Access VBAを使ってデータをメッセージIDを元にフィルタして取得出来ないかなぁと考案中。

図:ドキュメントライブラリを追加しxlsxをアップ

図:Power Automateでフローを作成中の画面

図:xlsxファイルに書き込まれた様子

Boxのフォルダを監視する

Boxのようなクラウドストレージだと、あのファイルが急に消えたとか誰かのゴミ箱に入ってたなんて事故が頻繁に起きます。そういった場合、管理者しかファイルの在処を特定できないので、結構困った事態になることがあります。しかし、今回の機能を使う事によって、フォルダの状況を監視することが可能になります。ただし、フリーアカウントだと投稿ができません(Microsoft365かonmicrosoft.comの開発アカウントでなければならない)。その場合Azure ADでonmicrosoft.comのアカウントを作って、作成や認証はそのアカウントで行う必要があります。(Teams投稿のフローで接続できませんのエラーが出ます)

  1. Power Automateを起動する
  2. 左サイドパネルから作成をクリック
  3. 自動フローをクリック
  4. フロー名を適当に入力し、検索窓からboxで検索。「Box – ファイルが変更された時」を選びます
  5. 作成をクリック
  6. Boxへのサインインを行う
  7. Boxへのアクセス許可をクリックする
  8. 対象のフォルダを選択します。
  9. 新しいステップをクリックする
  10. アクションでは、Teamsを検索し、メッセージを投稿する(V3)を選びます。
  11. チームとチャネルを選ぶ
  12. メッセージを作りますが、動的なコンテンツからよく使うのは、LastModifiedBy, DisplayName, Idの3つを入れておけば良いかと思います。詳細オプションで件名を入れておくのも良いでしょう。
  13. 保存をクリック。onmicrosoft.comのアカウントからはサインアウトしておきましょう。
  14. アップロードなどの作業を行っても、Teamsに投稿されるようになるので、フォルダ内の監視が可能になります。

※オカシナ大企業だとBoxとOffie365の契約をしているにも関わらず、Box側⇒Microsoft365側へのアクセスを許可していないケースがあります。その場合Microsoft365側でBoxのIPレンジに対して接続許可をしなければこのテクニックは使えません。

個人的にはTeams投稿だと鬱陶しいので、添付のExcelに書き込むFlowを作ったほうが楽かと思います。

途中に条件判定のFlow挟んで、必要なBox側アクションだけ取得するのもいいですね。

図:Boxのフローを作成中

図:作成したフローはこちら

図:実際にアップロードしたらTeamsに投稿されました

URL Scheme

概要

ある特殊なURIをクリックすると、ブラウザが立ち上がって該当のページが表示され、ついでにテンプレートのメッセージまで表示する。または、ローカルのアプリが立ち上がり、同様の事ができる。これがURL Scheme(またはURI Handler)と呼びます。もっとも知られているものは、https://であったり、mailto:ですね。msteams:といったこれらはディープリンクと呼ばれたりもします。

Microsoft TeamsにもこのURL Schemeは存在し、以下のような形でURLを組み上げて、クリックすると作動するようになっています。

チャットを送る

以下のは個人宛のTeamsに送る場合の仕組みです。

  1. https://teams.microsoft.com/l/chat/0/0?users=​ここに相手のメアド&message=ここにメッセージ
  2. msteams:/l/chat/0/0?users=ここに相手のメアド&message=ここにメッセージ

ウェブ版で開きたいのであれば、https://teams.microsoft.com/_#/l/chat/0/0?users=ここに相手のメアドでいけます。

チャンネルにも投げられないか?という事であれば、以下の手順を踏んでURIを構築する事が可能です。

  1. 特定のチームのチャンネルを開く
  2. チャンネルへのリンクを取得
  3. このリンクをクリックすると、直接ウェブもしくはローカルのTeamsアプリが起動して開きます。
  4. この時、msteams://の以下に構築すれば同様の事が可能です。

参考例として

msteams:/l/channel/チャンネルのID@thread.skype/ここに該当のチームのコード?groupId=グループのID&tenantId=テナントのID

会議の予約

以下は新しい会議を作る場合の仕組みです。

  1. msteams:/l/meeting/new?attendees=user1@mail.com,user2@mail.com&subject=ここに会議タイトル&content=ここに打ち合わせ内容&startTime=2020-02-25T09:00&endTime=2020-02-25T10:00
  2. ​https://teams.microsoft.com/_#/l/meeting/new?attendees=user1@mail.com,user2@mail.com&subject=ここに会議タイトル&content=ここに打ち合わせ内容&startTime=2020-02-25T09:00&endTime=2020-02-25T10:00

複数ユーザを会議に招集する場合には、上記のようにattendeesに対してカンマ区切りでメアドを入れれば良い。startTime/endTimeの組み立て方に注意すれば、それほど難しくなく会議登録画面が立ち上がります。後は、会議室の選択をして「スケジュールを設定」をクリックすればオッケー。Outlookの会議予約が酷く使いにくい代物なので、他のアプリからGraph API等も合わせて使えばかなり利便性が向上すると思う。

なお、自分で会議を立てると自動的に自分が主催者として登録されるので、自分のメアドは不要。

図:Teamsのほうが会議予約はしやすい

メンバータグ付け

2020年4月からリリースされた新機能ながら、あんまり使われていないのか話題に登っていないような気がする機能。この機能は同じチャンネル内に参加してるメンバーに対してタグ付けして、そのタグを持ってメンションを送る機能。つまり、そのタグのメンションに含まれていない人には通知は飛ばない(ただし同じチャンネル内なので、もちろん投稿を見ることは可能)

主な使い所としては、「総務」というチャンネルを作り参加しているメンバーに対して「経理」「人事」「給与計算」「IT」といった役割のタグを設けて、そのタグを持ってメンションを送ることで、どの役割の人宛の話題なのかが明確になる。Teamsはメンションで送らないと通知が行かない特性があるため、だからといって、@teamで全員にメンション送るというのも要領が悪い。そこでこのタグを使うというわけです。ただし、異動が多い・人数が多い場合にはこのタグの管理が少々面倒になるかもしれない。作り方は以下の通り

  1. チャンネルをクリックして、「…」をクリックし、チームを管理をクリック
  2. デフォルトではチャンネルオーナーだけがタグ付できますが、設定=>タグからメンバー全員が付けられるようにも可能
  3. メンバー一覧に於いて、タグの付近を触るとマークが出るので、クリックする
  4. すでにあるタグの場合は選べば良い。ない場合には「xxxを作成」を選択すれば新しいタグを付けられる
  5. タグは複数つける事が可能。また当然日本語も可能です。ただし、チーム毎に必要なので、あまり多くのチームを作ると面倒なことになる。
  6. Microsoft Teams 管理センターでもタグの管理は可能です。
  7. 実際にメンションを送る場合には、例えば@会社というタグを作った場合には、@会社 コメントという形でチャット欄で入力する事でチャンネル内の会社タグを持ってる人にだけ、メンションが送られます
  8. 企業で使う場合、IT管理者がこのタグ機能をオフにしてる場合解除しないと利用できません

図:メンションリストに出てきた

相手の画面を操縦する

Teamsは他のアプリケーション同様に画面共有をして、会議参加者に対してPowerPointの資料などを表示しながら会議が可能です。ですが、それ以外にも「画面を遠隔操作させる」事が可能になっています。会議だけでなく、研修などで何かのアプリケーションの操作を教えるようなシーンで、参加者で出来ない人がいた場合、主催者側へ画面共有した後に許可を与えることで、主催者側がその画面を遠隔から操縦ができます。画面共有は知っていても操縦できる事は知らない人が多いですね。

研修会のサポートであったり、社内ヘルプデスクなどで相手の声を聞きながらサポートなど会議ではない使い方では非常に重要な機能になると思います。

この操縦許可は以下のように与えます。

  1. 会議中に画面操縦をしてもらいたい側が、操縦する側へ画面共有を行う。
  2. 画面共有は特定ウィンドウではなく画面全体のほうが望ましい(ポップアップやドロップダウンメニューなどが表示されないので)
  3. 共有した側の上部に「制御を渡す」という項目が出るので、ドロップダウンで渡したい相手を選ぶ(逆に相手側から制御を要求することも可能)
  4. 相手はTeams上の共有画面上からマウスやキーボードで操縦が可能(相手と自分のマウスがデスクトップに表示されます)
  5. 共有した側の上部で「キャンセル」をすれば、遠隔操縦をキャンセル可能
  6. リモートデスクトップのような操作感なので、ネットワーク回線が遅いと動作は遅いですが、直接操縦できるので、操作デモをさせることが可能です。

図:画面制御の許可画面

図:遠隔操縦している様子

Teamsのタブに埋め込む

Google Apps Scriptで作ったウェブアプリケーションやスプレッドシートは、Teamsのタブに埋め込む事が可能です。作業はひどく簡単なので、こうしておくことで、実際にそのTeams関連のアプリをダイレクトにその場で作業ができるのもメリットの一つです。

  1. Google SpreadsheetやGoogle Apps Scriptで作成したウェブアプリケーションのURLを取得する
  2. Teamsのチャネル上部にある+ボタンをクリック
  3. タブの追加では「Webサイト」をクリック
  4. タブ名を入れて、1.のURLを入れて、保存ボタンをクリック
  5. これでチャネルにスプレッドシートやウェブアプリが埋め込み可能です。流れ作業でそのまま関連の仕事をできるので非常に効率アップします。

図:スプレッドシートにアプリを埋め込み

会議の様子を録画する

TeamsにはMicrosoft365のEnterprise E1, E3, E5のユーザだけ画面の録画機能が使えるようになっています。Google Hangout MeetもG Suite Enterpriseのユーザだけがこういった機能が使えます。しかし、一般ユーザにはTeamsでは録画ができません。また、Enterpriseではないようなケースでも当然使えないわけです。

しかし、Google Chromeの拡張機能を使えば録画は可能になります。タブ単位やデスクトップ録画など様々なタイプの録画可能なものがあります。但し外部にアカウントを必要とするケースが多いので、その点は注意です。主に使われてる拡張機能は、Nimbus Screenshot & Screen Video RecorderScreencastifyLoomApertureなどなど。Screencastifyはfree版は5分しか録画できないので、有償版が必要ですね。。。

また、Windows10の場合標準でXbox Game Barというスクリーンキャプチャーアプリが入っているので、Windowsキー+Gキーで録画が可能です(ゲーム実況などで使われています)。こちらはアカウント不要のローカルアプリケーションなのでオススメです。Xbox Game Barが使えない場合は定番のCamstudioのようなスクリーンキャプチャアプリも良いかもしれません。

会議の様子を録画する目的は、会議の議事録起こしを後で行う、研修などの様子を取って後で社内で教材として活用するなどビジネスシーンでも意外と利用する頻度とシーンは多いです。会議や研修に参加できなかった人のためにも、録画して配信・共有しておくと仕事が捗ると思います。ぜひ活用しましょう。

図:Screencastifyでの録画シーン

関連リンク

共有してみる: