イベント開催時のスケジュールファイル自動配信で作業を減らそう！

# はじめに

こんにちは。
当社では、社内向けに社内・外のスペシャリストを招いてセミナーなど、イベントを開催しています。

申込自体は、Microsoft Forms を以前から活用しているのですが、開催スケジュールや参加 URL が入った Outlook のスケジュールの設定は、心のこもった手作業で行っていました。

そのため、一部の申込者や開催ギリギリの申込者の手当が漏れてしまうことが少なからずありました。

そこで、 Power Automate を活用して、スケジュール設定が入ったファイルを自動配信する仕組みを作ることにしました。

# 目標とするところ

## 現在
こんなかんじ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/0cb146b4-eadb-37cd-064c-5d3af1245292.png)

忙しかったりすると、定期的に手作業でスケジュールに追加することも頻度が下がってしまうのと、そもそも、「申し込み完了メール」も送っていなかったので、申込者が不安に思うこともありました。
申し込み完了メール自体は Forms の機能で送ることはあるのですが、未利用でした。

## こうしたい

Power Automate で人を介さずに、申し込みのたびに自動送信
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/cbf81935-9c40-1a5f-6273-5ab82cbdd022.png)

申し込み完了メールとともに Outlook のスケジュールファイルが届くことで、運営者の負荷低減に加えて申込者の不安も解消されます。

# 実際に作ってみた

というわけで、こちらに完成したものがございます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/bcffb62e-9aa9-6d83-0209-71633644640a.png)

ここからは 各部品ごとに何をしているかを記載していきます。

事前に、配信したいスケジュールファイルを OneDrive のフォルダへ格納しておいてください。

## 新しい応答が送信されるとき

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/9fe473c1-991a-9d71-2bb3-171a81f2b26a.png)

申込につかう Forms のフォーム ID を指定します。
これにより、申し込みがあるたびにこのフローが起動します。

:::note info
ほかの人が作った Forms について
ほかの人が作成した Forms の情報を取得したい場合は、編集権限がある Forms の URL を発行してもらったうえでアクセス済みの状態にしてください。
そうしないと、フローを作成しても動きません（保存できません）。
また、プルダウンでフォームIDを選択することもできないので、 Forms の URL の中から id パラメーターから抜き出してください。
URL の例：
https://forms.office.com/Pages/DesignPageV2.aspx?prevorigin=shell&origin=NeoPortalPage&subpage=design&id=ABCDEFGHIJKLMNOPQRSTUVWXYZ124567890

この例だと、ABCDEFGHIJKLMNOPQRSTUVWXYZ124567890 を使います。
:::

## 応答の詳細を取得する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/3e74fc01-caef-e269-e2f7-e9a1b8e3c2fe.png)

こちらも、 Forms のフォーム ID を指定します。
また、応答 ID についてには、前の手順のデータ（稲妻アイコン）から「応答ID」を選択します。

## 変数を初期化する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/9509c86b-114b-e119-ecec-356699290ab5.png)

配信するスケジュールファイルが複数あった場合にも対応できるように、 Type が Array の変数を作成して、初期化します。

## フォルダー内のファイルのリスト

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/fdfaec69-6cd4-c745-a526-8586882eb9e7.png)

配信するスケジュールファイルが格納されている OneDrive for Business のパスを設定します。
わたしは管理しやすいように、AutoSchedule というフォルダの中に開催毎のフォルダを作っています。

## For each

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/932502d4-d17a-c985-afb9-e6d6bf2419ab.png)

前ステップの「フォルダー内のファイルのリスト」で取得したリストに対して、繰り返し実行するようにします。

### パスによるファイルコンテンツの取得

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/3e6e80ad-4660-99eb-c985-0d22fb3e2ba8.png)

ファイルパスに対して、「フォルダー内のファイルのリスト」のパスを設定します。

### 配列変数に追加

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/0eab3b1c-4310-dbd5-c42f-b71e2513b715.png)

事前に作っておいた、Array Type(配列)の変数に、ファイルコンテンツを埋め込んでいきます。

```:指定の例
{
  "Name": @{item()?['Name']},
  "ContentBytes": @{body('パスによるファイル_コンテンツの取得')}
}
```

これにより、配信したいスケジュールファイルが複数ある場合でも、その個数分添付ファイルとして設定することができます。

## メールの送信(V2)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/0f6d75ba-22e4-aab8-8fc7-69ab47990035.png)

以下を参考にして各パラメータを設定します。

* 宛先
  * 申込者のメールアドレスとするため、 MS Forms の入力者の情報（応答の詳細）からメールアドレスを指定
* 件名
  * 適したタイトルを設定
* 本文
  * 図のように宛名（これも応答の詳細から名前を取得）や本文を記載しておきます。
* 添付ファイル（詳細パラメーターから選択する）
  * 配列変数を設定することで、配信したいスケジュールファイルを添付することが可能 
* 重要度
  * 適宜設定

これで、Forms から申し込みがあるたびに、自動的に申し込み完了メールとスケジュールファイルの配信が行われるようになります。

セミナーごとに Forms とこのフローとスケジュールファイルを用意して、微調整するだけで温かみのある手作業を行わずとも参加者に通知することができます。

# まとめ

Power Automateを利用することで、課題になっていた諸々の問題も解決し、イベント開催の通知が楽になるとともに漏れも減りました。運用負荷を下げるのにも非常に役立っています。
社内イベントを運営している方のお助けになれば幸いです

ーーー
記載されている会社名、製品名、サービス名、ロゴ等は各社の商標または登録商標です。