Help us understand the problem. What is going on with this article?

Power AutomateでExcelのデータを元に定型文章を生成する

はじめに

このようなケースでの利用を想定しています

  • ユーザーIDと初期パスワード一覧をExcelで管理している
  • 一人一人に各自が利用するユーザーIDと初期パスワードを配布したい
  • IDと初期パスワード以外の定型文は全員同じ

今回は、一人一人にIDと初期パスワードを書いた紙を配布する、というシナリオを考えます。
(IDとパスワードを紙で配布することの是非はありますが、ハンズオン研修などその場限りのID/パスワードの提供を今回は想定しています)

image.png

Excelの準備

このように、ユーザー名と初期パスワードの一覧表があるとします。

image.png

これをPower Automateで利用するために、以下の準備をします。

  • User IDとPasswordが含まれた表を「テーブル」として定義する
  • ExcelファイルをOneDrive または SharePoint Onlineに保存し、Power Automateからアクセスできるようにする

image.png

OneNoteの用意

Power Automateから直接印刷することはできないので、いったん、データとして出力します。今回はOneNoteを利用します。

準備として、OneNoteに、今回のデータを収めるセクションを作成しておきます。ノートは作成しません。
(こうすることで、後程セクション内の全ノートを印刷することができます。)

image.png

フローの作成

Power Automateでフローを作成します。今回は手動でしか実行しないので、トリガーは「手動でフローをトリガーします」を使います。

image.png

Excel Online(Business)コネクタから、「表内に存在する行を一覧表示」を選びます。

image.png

今回はExcelのデータをOneDrive上に保存したので、場所を「OneDrive for Business」と指定し、保存したファイルを選び、テーブルの名前を選択します。

image.png

続いて、OneNoteの「セクションにページを作成」アクションを選びます。

image.png

ノートブックキーには、先ほど空のセクションを作ったノートブックの名前を入れます。ノートブックのセクションは、先ほど作成した空のセクションそのものを指定します。

image.png

今回は、OneNote内に表を埋め込みたいのですが、標準のリッチテキストエディタでは表を扱えないため、htmlを直接記述できるモードに切り替えます。

image.png

ベースとしてこのようなHTML文を用意します。

<html>
  <head>
    <title>研修用O365 アカウント</title>
    <meta name="created" content=""/>
  </head>
  <body>
<p>あなたのユーザー名と初期パスワードはこちらです</p>

<table border="1">
    <tr>
        <td>
            ユーザー名
        </td>
        <td>

        </td>
    </tr>
    <tr>
        <td>
            初期パスワード
        </td>
        <td>

        </td>
    </tr>
</table>

<p>※ 初回ログオン時に各自のパスワードに変更してください</p>
  </body>
</html>

これを先ほどのOneNoteアクションのページコンテンツに書いたうえで、ユーザー名や初期パスワードにExcelから読み込んだ値を当てはめていきます。

image.png

ソースで書くとこのようになります。

<html>
  <head>
    <title> @{items('Apply_to_each')?['User ID']}研修用 アカウント</title>
    <meta name="created" content="@{formatDateTime(addhours(utcnow(),9),'yyyy-MM-dd')}"/>
  </head>
  <body>
<p>あなたのユーザー名と初期パスワードはこちらです</p>

<table border="1">
    <tr>
        <td>
            ユーザー名
        </td>
        <td>
@{items('Apply_to_each')?['User ID']}
        </td>
    </tr>
    <tr>
        <td>
            初期パスワード
        </td>
        <td>
@{items('Apply_to_each')?['Password']}
        </td>
    </tr>
</table>

<p>※ 初回ログオン時に各自のパスワードに変更してください</p>
  </body>
</html>

このうち、

<meta name="created" content="@{formatDateTime(addhours(utcnow(),9),'yyyy-MM-dd')}"/>

の部分はOneNoteの作成日にあたる部分で、フローを実行した日時を日本時間に直して入れるようにしています。

フローの実行

フローを実行すると、OneNoteに複数のページが作成されています。

image.png

印刷

生成されたOneNoteのページをセクションごとまとめて印刷します。今回はPDFに出力してみます。
(試した限り、この操作はOneNote Onlineだと利用できず、デスクトップクライアントが必要になります)

image.png

これで、ユーザーごとのIDとパスワードの一覧が出来ました。

image.png

終わりに

Excelなどのテーブルデータを元に定型文章を作るフローは、強力かつ効果が分かりやすいものだと感じており、個人的には好きな使い方の一つです。

今回は印刷しましたが、メールで個々の情報を送信するケースでも便利だと思います。ぜひ活用してみてください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away