Power Automateを使用して添付ファイルを自動保存する

Pocket

はじめに

最近注目度が上がっているMicrosoft社製Power Platformにおけるローコード・ノーコードアプリ開発製品群の1つであるPower Automateを使用して、メールに添付されているファイルを自動保存する方法についてご紹介します。

従来のRPA製品とは異なり、デスクトップ画面の操作を自動化することはできませんが、用意されているコネクタを組み合わせることにより、様々な業務が自動化できます。

Power Automate とは

Power Automateは、アプリケーションとサービス間の自動ワークフローを作成し、ファイルの同期、通知の受信、データ収集などを行えます。Microsoft製品を含む様々なアプリケーションと連携してタスク自動化を実現します。

添付ファイルを自動保存するプロセスについて

今回は、Power Automateを利用し、受信したメールに添付されているファイルをSharePointに自動保存するプロセスを作成します。

【自動化する処理イメージ】

事前準備

SharePointに添付ファイルが格納されるフォルダを作成します。
①Power Automateホーム画面を開き、左上のメニューアイコンをクリックします。

 

② 表示されたメニューの中にある「SharePoint」をクリックします。

③SharePoint画面内の「添付ファイル保存フォルダ」を選択します。

④表示された「新しいサイト」中の「チームサイト」を選択します。

➄添付ファイル保存用のフォルダをクリックします。

⑥フォルダ名を「添付ファイル保存フォルダ」と入力します。

➆フォルダが作成されます。

 SharePointサイトのトップフォルダは「Shared Documents」という名称なので、今回作成したフォルダは下記のようになります。
 保存したファイルパス:Shared Documents/添付ファイル保存フォルダ

Power Automateフローの作成

①Power Automateのコンソール画面を開き、左側の「作成」をクリックします。

②「自動化したクラウドフロー」を選択します。
 「自動化したクラウドフロー」は、イベントを検知してそのイベントを契機に動作させ
 たいフローを作成する場合に使用します。

 

③「新しいメールが届いたとき(Gmail)」コネクタを選択して、「作成」をクリックし
 ます。今回の処理は、メール受信をイベントとして動作させるので、メールを受信する
 メールアカウントにサインインしてください。

 フロー名は自由につけてください。

④「新しいメールが届いたとき」アクションのパラメータを、下記に従って入力します。
  フォルダ―     :受信フォルダ(Inbox)を選択します。
  添付ファイルあり  :「はい」を選択します。
             (添付ファイル付きのメールのみをターゲットとします)
  添付ファイルを含める:「はい」を選択します。

⑤「変数を初期化する」アクションのパラメータを、下記に従って入力します。
  名前:変数名(var)を設定します。(変数名は、自由につけてください)
  種類:値の形式に「文字列」を設定します。
  値 :空白にします。

⑥「タイムゾーンの変換」アクションのパラメータを、下記に従って入力します。
  基準時間      :「受信日時」を設定します。
  変換元のタイムゾーン:「(UTC)協定世界時」を設定します。
  変換先のタイムゾーン:「(UTC+09:00)大阪、札幌、東京」を設定します。

⑦「作成」アクションのパラメータを、下記に従って入力します。
  入力:添付ファイル保存フォルダ/@{formatDateTime(body(‘タイム_ゾーンの変
     換’),’yyyy-MM-dd-HHmm’)}
     ※「事前準備」で作成した「添付ファイル保存フォルダ」の配下に
       ‘yyyy-MM-dd-HHmm’の形式でフォルダを作成するため文字列を整形
       します。
     
  ‘yyyy-MM-dd-HHmm’ の部分は、formatDateTime()関数を用いて、前のステップ
  のアクションで変換した時間を入力値として作成します。

⑧「新しいフォルダを作成」アクションのパラメータを、下記に従って入力します。
  サイトのアドレス  :SharePointサイトを入力します。
             事前準備➆で表示されている画面のアドレスを入力します。
  一覧またはライブラリ:ドキュメントを選択します。
  フォルダ―のパス   :「作成」アクションの動的コンテンツ「出力」を選択します。
  ビューによる列の制限:空白にします。

⑨ループ処理「Apply to each」アクションのパラメータを設定します。

 ※一つのメールの添付ファイルが複数ある場合を想定して、「Apply to each」を利用します。
  「新しいメールが届いたとき」アクションの「添付ファイル」を設定します。

⑩「ファイルの作成」アクションのパラメータを、下記に従って入力します。
  サイトのアドレス :SharePointサイトを入力します。
            事前準備➆で表示されている画面のアドレスを入力します。
  フォルダ―のパス :「完全パス」を設定します。
  ファイル名    :受信したメールの「添付ファイルの名前」を設定します。
  ファイルコンテンツ:受信したメールの「添付ファイルコンテンツ」を設定します。

⑪「ファイルのプロパティの取得」アクションのパラメータを、下記に従って入力します。
  サイトのアドレス:SharePointサイトを入力します。
           事前準備➆で表示されている画面のアドレスを入力をします。
  ライブラリ名  :「ドキュメント」を設定します。
  ID       :動的コンテンツ(動的な値)であるItemIdを選択します。
           *ItemIdには、
             @{outputs(‘ファイルの作成’)?[‘body/ItemId’]}
            を格納します。

⑫ループの中に「文字列変数に追加」アクションのパラメータを、下記に従って入力します。
  名前:変数 varを入力します。
  値 :JSONを入力します。
     このJSONを利用することにより、メールの添付ファイルを取り出すことができます。

値に格納するJSONは、以下のとおりです。

{
    “type”: “ColumnSet”,
    “columns”: [
        {
            “type”: “Column”,
            “width”: “stretch”,
            “items”: [
                {
                    “type”: “TextBlock”,
                    “text”: “@{outputs(‘ファイルのプロパティの取得’)?[‘body/{FilenameWithExtension}’]}”,
                    “wrap”: true,
                    “horizontalAlignment”: “Left”
                }
            ],
            “horizontalAlignment”: “Center”,
            “verticalContentAlignment”: “Center”
        },
        {
            “type”: “Column”,
            “width”: “stretch”,
            “items”: [
                {
                    “type”: “ActionSet”,
                    “actions”: [
                        {
                            “type”: “Action.OpenUrl”,
                            “url”: “@{outputs(‘ファイルのプロパティの取得’)?[‘body/{Link}’]}”,
                            “title”: “open”
                        }
                    ],
                    “horizontalAlignment”: “Right”
                }
            ],
            “verticalContentAlignment”: “Center”
        }
    ],
    “separator”: true,
    “style”: “emphasis”
},

以上で、添付ファイルを自動保存するプロセスの作成が完了です。

このプロセスを動作させると、添付ファイル付きメールを受信すると、SharePointの所定のフォルダに受信時刻のフォルダを作成し、その中に添付ファイルが保存されます。メールごとに保存先のフォルダを変えるので、添付ファイルに同名のファイルがあっても上書きはされません。
単純作業ではありますが、人がリアルタイムにこのようなことをするのは、ストレスが溜まったり、保存を忘れたりすることが考えられます。

このような単純作業こそ、自動化に向いている作業となるので、ご自身の業務を今一度見返して自動化できる業務を見つけてみてはいかがでしょうか。

おわりに

Power Automateは、さまざまなアプリケーションをつなげることで、色々なプロセスを自動化できます。さらに、Power Appsで作成した画面と簡単に連携ができます。
弊社では、Power Automate、Power Appsの教育サービスをはじめ、開発支援もさせていただいております。

お気軽にWEBフォームからお問い合わせください。

お問い合わせ先

執筆者プロフィール

Tsubouchi Hideyuki
Tsubouchi Hideyukitdi 西日本製造システム部
入社時から組み込み系のプログラミングを行ってきましたが、近年からUiPathやMicrosoft Power Platformに携わっています。
Pocket

関連記事