SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Power Automate Desktopチュートリアル

Windows10の無償デスクトップ自動化ツール「Power Automate Desktop」でデータ登録を自動化する

Power Automate Desktopチュートリアル 第9回

初期データの投入

 次に、データベースのテーブルにデータを登録するフローを作成します。

[1]新しいフローを作成する

 Power Automate for Desktopのトップ画面より[+新しいフロー]をクリックして、適切な名前で新規のフローを[作成]します。

[2]メール受信のフローを貼り付ける

 メール受信のフローは、前回の記事冒頭からダウンロードできます。ダウンロードした.zipファイルを展開して、「第8回 2.受信メールメッセージを取得する.txt」をエディター上で開き、全選択してコピーします。フローデザイナーでワークスペースをクリックして、ペーストします。

 また、フローから読み込む「メールアクセス情報.txt」をドキュメントフォルダーに保存しておきましょう。

[3][メールメッセージの取得]アクションから後のアクションを削除する

 [メールメッセージの取得]アクションまでを残して、以降の[変数の設定]アクションを削除します。

メールメッセージの取得まで
メールメッセージの取得まで

 この時点でフローを実行すると、変数RetrievedEmailsには未読のメールメッセージオブジェクトのリストが入った状態になります(未読メールを取得するフローであったため、未読のメールがないと何も取得されません)。実行した場合、すべて既読になってしまうので、改めて未読として取得したい場合は、Gmailサイトの受信メール一覧で選択して「未読」に戻しておく必要があります。

[4]データベースに接続する

 [データベース]アクショングループの[SQL接続を開く]アクションを配置すると、設定ダイアログが開きます。データベース/テーブル作成時と異なるのは、既にデータベースMAILDBがあるためそれを指定するところです。

 [接続文字列]テキストボックスの右側の[接続文字列の作成]ボタンをクリックすると、[データリンクプロパティ]ウィンドウが表示されるので、以下の表のように設定を追加します。

[データリンクプロパティ]ウィンドウ
タブ 項目 設定値
プロバイダー 接続するデータを選択します SQL Server Native Client 11.0
接続 サーバー名を選択または入力 (localdb)\MSSQLLocalDB
サーバーへのログオン情報 「Windows NTの統合セキュリティを使用する」を選択
データベースの選択 MAILDB

 [接続]タブでは、[接続テスト]ボタンをクリックし、「接続テストに成功しました。」と表示されることを確認してください。その後、[OK]ボタンをクリックすると、元のウィンドウに戻るので、接続文字列が以下のように反映されていることを確認した上で、[保存]ボタンをクリックします(「Initial Catalog=MAILDB」の指定があることに注意)。

Provider=SQLNCLI11.1;Integrated Security=SSPI;Persist Security Info=False;User ID="";Initial Catalog=MAILDB;Data Source=(localdb)\MSSQLLocalDB;Initial File Name="";Server SPN=""

 データリンクプロパティウィンドウで指定しなくても、接続文字列を直接入力することもできます。その場合も、データリンクプロパティウィンドウの[接続テスト]ボタンで正しく接続できるか確認できます。空文字設定になっている個所は、設定ごと削除しても問題ありません。

SQL接続を開くアクションの設定(データベース指定接続文字列)
SQL接続を開くアクションの設定(データベース指定接続文字列)

[5]For eachループを置く

 [ループ]アクショングループの[For each]アクションを配置すると、設定ダイアログが開きます。

For eachアクションを配置
For eachアクションを配置
For eachアクションの設定
For eachアクションの設定

 [反復処理を行う]欄から「%RetrievedEmails%」を入力し、保存します。

[6]宛先リストを結合する

 メールメッセージ型のToとCcは複数の値を持つリスト型なので1つのテキストにまとめます。[テキスト]アクショングループの[テキストの結合]アクションを[For each]と[End]の間に配置します。

テキストの結合アクションの配置
テキストの結合アクションの配置
テキストの結合アクションの設定
テキストの結合アクションの設定

 以下の設定を入力し、保存します。

  • 結合するリストを指定:%CurrentItem['To']%
  • リスト項目を区切る区切り記号:カスタム
  • カスタム区切り記号:,
  • 生成された変数:%ToUsers%

[7]カーボンコピーのリストを結合する

 同じく、[テキスト]アクショングループの[テキストの結合]アクションを[End]の上に配置します。設定ダイアログが表示されるので、以下の設定を入力し、保存します。

  • 結合するリストを指定:%CurrentItem['Cc']%
  • リスト項目を区切る区切り記号:カスタム
  • カスタム区切り記号:,
  • 生成された変数:%CcUsers%

[8]テーブルにメールメッセージを登録する

 [データベース]アクショングループの[SQLステートメントの実行]アクションを配置すると、設定ダイアログが開きます。

SQLステートメントの実行(データ登録)アクションの配置
SQLステートメントの実行(データ登録)アクションの配置
SQLステートメントの実行(データ登録)アクションの設定
SQLステートメントの実行(データ登録)アクションの設定

 [SQLステートメント]に以下の設定を入力し、保存します。MAIL_TABLEに登録されていないメールメッセージをMAIL_TABLEテーブルに登録するコマンドです。

IF NOT EXISTS (SELECT 1 FROM MAIL_TABLE WHERE Uid = %CurrentItem.Uid% )
BEGIN
  INSERT INTO MAIL_TABLE
         (Uid
         ,FromUser
         ,ToUsers
         ,CcUsers
         ,Subject
         ,BodyText
         ,Date)
     VALUES
         (%CurrentItem.Uid%
         ,'%CurrentItem['From']%'
         ,'%ToUsers%'
         ,'%CcUsers%'
         ,'%CurrentItem.Subject%'
         ,'%CurrentItem.BodyText%'
         ,'%CurrentItem.Date%')
END

[9]接続を閉じる

 [データベース]アクショングループの[SQL接続を閉じる]アクションを配置すると、設定ダイアログが開きます。既定の設定のまま保存します。

[10]このフローを実行する

 フローを保存して、実行します。未読のメールがある場合、MAIL_TABLEテーブルにデータが登録されます。このテーブルに未登録の未読メールが1つ以上ある状態で行わないと、何も登録されません。また、同じUidを持つメッセージは登録しません。

まとめ

 Power Automate for Desktopのフローから、DBMSに接続して、データを登録するアクションを説明しました。データが大量になる場合や、他のシステムとのデータを共有・交換する場合などに、データベースが活用できます。データを繰り返し登録するような業務は、フローを作成しておくとことで効率的にミスなく作業を進められます。データベースから、データを抽出する部分は、次回説明します。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
Power Automate Desktopチュートリアル連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 飯島 聡(WINGSプロジェクト イイジマ サトシ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/15874 2022/05/25 11:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー