LoginSignup
4

More than 1 year has passed since last update.

posted at

updated at

Power Automateを用いてOneDriveへのリンクを含んだメールを一斉送信する方法

0.はじめに

この記事では,クラウドに保存されたファイルへのリンクを含むメールを一斉に送りたい,という状況を想定しています.ファイルも送り先ごとに違うような場合,ファイルごとにリンクを生成してメールの本文に貼り付ける,という作業は,メール件数が増えると煩雑です.これを,Microsoft Power Automateで片付けよう,というのがこの記事の趣旨です.

1.Excelファイルとリンクを送りたいファイルをクラウド上に保存します

1.0 Excelファイルを用意します

まず,メールを送りたい送り先一覧を記したテーブルを含むExcelファイルをOneDriveかSharePoint上に用意します.ID,Name,Email,Statusの列を用意しています.複数名に一緒に送りたい場合は,1行にまとめておきます.(この例だと,IDが2である行は,2人一緒にまとめて送信する,ということです.)Statusの列は,既に送信済みである場合にSentと記録するために用意しました.
excel_to_outlook_2_1.png

1.1送りたいファイルをOneDriveかSharePointに保存します

このとき,IDと紐付いた通し番号を含むファイル名をつけておきます.

excel_to_outlook_2_5.png

2.Power Automateでフローを実行する

2.0フローの全体像

大まかなの流れとしては,手動でトリガーし,Excelファイルの情報を取得し,各行ごとに,行ID番号と紐付いたOneDrive上のファイルへのリンクを取得し,Outlookからメールを送る,というものです.

2.1手動でフローをトリガーします

空白から開始(Create from blank)でインスタントクラウドフローを選択して,フローの作成を始めます.
トリガーとしては,手動でフローをトリガーします(Manually trigger a flow)を選択します.
excel_to_outlook_2_19.png

2.2 変数を初期化します

送り先の名前に様などの敬称をつける,という連結操作(concat)に用いる変数を最初に宣言しておきます.
コネクタは組み込み(Built-in)にある変数(Variables)を選択し,アクションとして変数の初期化(Initialize variable)を選びます.文字列の結合のために用いるので,種類(Type)は文字列(string)を選択します.
excel_to_outlook_2_4.png
あとで,変数を宣言しようとすると,The operation 'Initialize variable' can only be used at top level.とエラーが出てしまうので,初めの段階で変数の初期化を行っておきます.

2.3 Excelで表内に存在する行一覧を表示する

コネクタのExcelを選択し,List rows present in a tableを選択します.
excel_to_outook_2_7.png

詳細オプションにFilter Queryという項目があるので,Status ne 'Sent'と記載します.neは'not equal'の略ですね.こうすることで,Status列がSentでない行だけ一覧として取得されます.
記事「Power Automateを使ってMicrosoft Teamsにメンバーを一括登録する方法」において,既に追加済みのメンバーをaddedと記録していたのと,同じやり方です.
Google Apps Script(GAS)のTutorial: Sending emails from a Spreadsheetのチュートリアル記事の中で,emailSentという列を設けて,重複送信を避ける,という説明があります.本記事のこのステップは,GAS×Spreadsheetの代わりにPower Automate×Excelでも同様なことを行ってみた,ということになります.

2.4 取得した各業に対して一連の操作を行う

次に,アクションを追加し,組み込みのコネクタのControlを選択し,Apply to eachを選びます.以前の手順から出力を選択という項目は,動的コンテンツ一覧に表示されるExcelのvalueを選択します.つまり,ステップ2.3で取得されたStatusがSentでない各行に対して,以下のアクションを行う,ということです.
excel_to_outlook_2_9.png

2.4.0 OneDriveで共有用のリンクを生成する

コネクタとしてOneDrive(またはSharePoint)を選択し,共有用のリンクを生成します.リンクを生成するには,「共有リンクの作成」と「パスによる共有リンクの作成」の2種類がありますが,ここでは,パスによる共有リンクの作成を用います.
excel_to_outlook_2_16.png
リンクの種類は,View(閲覧専用),Edit(編集可能),Direct(ダウンロード用)から選択できます.リンクスコープはAnonymous(リンクを知っているすべてのユーザー, Anyone with the link)かOrganization(リンクを知っている組織内のユーザー, People in the organization with the link)を選択することができます.

2.4.1本文中の宛名用に名前に「様」と読点(コンマ)を連結する

このステップは,Excelテーブル内の名前に,様とコンマを追加して,「〜様,〜様」とメール本文に記入するためのステップです.今回は,Power Automateの機能を活用してみたくて,このように書きましたが,Excel関数のCONCAT()を使って,Excelテーブル内に,様付きの名前の列を用意しておいて,メールに読み込む方が,楽なのでは,と思います.
excel_to_outlook_2_10.png

2.4.1.0変数の設定

まず,Set variableで変数を設定します.Nameという変数にダイナミックコンテンツのExcelテーブル当該行のName_1という値を設定します.
excel_to_outlook_2_11.png

2.4.1.1文字列の連結

次に,今設定した変数と,文字列の"様"を式concatを用いて連結(concatenate)します.コネクタは組み込み(Built-in)のデータ操作(Data Opereation)を選択し,アクションは作成(compose)を用います.
excel_to_outlook_2_12.png
コードのプレビューを見ると,以下のようになっています.コードのプレビューは3点リーダーをタップすると,選択肢に表示される,そこから確認できます.
excel_to_outlook_2_14.png

excel_to_outlook_2_13.png

2.4.1.2複数送り先がある場合

1行に送り先が2人いる場合は,2人目の名前にも様をつけます.Conditionはいいいえで分岐させ,ダイナミックコンテンツのName_2null(空白)に等しくないときは,Name_2と様を連結させ,nullに等しい場合は,何もしません.

2.4.3Outlookでメールを送信する

OutlookのSend an email(V2)を用いて,メールを送信します.宛先は,ダイナミックコンテンツのEmail_1およびEmail_2を,セミコロンで区切って並べておきます.本文Bodyですが,名前と様を連結して得られたOutputsを利用します.OneDriveのファイルへのリンクも挿入しておきます.
excel_to_outlook_2_15.png

3.フローを実行する

フローを保存したら,手動でトリガーしてテストしてみます.問題なくフローが実行されました.
excel_to_outlook_2_17.png

受信ボックスを見ると,OneDrive内のファイルへのリンクが挿入されたメールが届いていました.
excel_to_outlook_2_18.png

4.最後に

複数の方に,異なるファイルへのリンクをメールで送りたかったので,このフローを作成しました.Power Automateに慣れたいということで,「様」を付けるのもPower Automate内でやってみましたが,実用上はその部分はExcel内でやった方が早いと思います.

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
4