【PowerAutomate】SharePointのテキストファイルに改行を付けてメール送信

スポンサーリンク




作業を自動化する
  • プログラミングは分からないけど自動化したい
  • PowerAutomateの使い方がイマイチ分からない
  • SharePointのテキストファイルを取得したい

無料ツールでさらにノンプログラミングで自動化ができるならぜひやってみたい!

この記事では、そんな方に向けてSharePointのテキストファイルの内容をメール送信する方法を4ステップで説明します。

  • フローの動き
  • フロー作成前の準備
  • フローを作る
  • フローを動かす
みずしぶき
みずしぶき

この記事を読めば、SharePointからテキストファイルの取得方法がわかるようになります。
文字化けの対処や改行コードの置換もしているので必見です。

まだPowerAutomateを使った事が無いという方はこちらの記事を参考にしてください。

PowerAutomateはブラウザで操作するのでインストール無しで利用できます。Windows10ではないMacユーザも自由に使えます。

スポンサーリンク

フローの動き

このフローでは「yyyymm」の日付が付くファイルを取得します。
例えば2022年8月に動かすと、ファイル名に「202208」が含まれるファイルを取得します。

動きを確認する為に2つファイルを用意しました。

202207_議事録.txt
202208_議事録.txt

それではフローを動かしてみます。

成功しました。

取得する予定のファイル内容はこちらです。

202208_議事録.txt

予定通りメールが届きました。

届いたメール

フローの動きは以上です。

このフローで指定した内容は3つ

  • フォルダ     ・・/DocLib
  • ファイル名の条件 ・・当月(yyyymm)
  • メールアドレス  ・・xxxx@yahoo.co.jp

この値を自由に変えると誰でも使えるようになっています。

このフローの特徴はテキストファイルを添付するのではなく、内容をメール本文に入力する部分です。
SharePointでもテキストファイルは使われるので覚えていると重宝します。

みずしぶき
みずしぶき

文字化けの対処や改行コードの置換も説明します

フロー作成前の準備

準備の内容は2つです。

  • テキストファイルの作成 ←文字コードはUTF8
  • SharePointへアップロード

テキストファイルを作成、文字コード「UTF-8」を指定して保存します。

UTF8以外だとどうなるのか?

これは文字コードをANSIにして試した結果です。

文字コードANSIを取得した結果

ANSIだと文字化けします。

SharePointにファイルをアップロードする。

準備は完了です!

スポンサーリンク

フローを作る

作成するフロー全体です。

使っているアクションは5種類です。

  • SharePoint :フォルダーの一覧
  • データ操作 :作成
  • データ操作 :アレイのフィルター処理
  • SharePoint :ファイルコンテンツの取得
  • Outlook  :メールの送信

使い方は作りながら見ていきましょう。それではフローを作っていきます。
まだ画面を開いていない方はMicrosoftの公式サイトからPowerAutomateを開いてください。

画面左にある作成から「インスタントクラウドフロー」を選択。

インスタントクラウドフロー

フロー名を入力して「手動でフローをトリガーします」を選んで作成します。

(1)ファイルの一覧を取得

ファイル名の「yyyymm」が毎月変わるので、ファイル名を固定で指定できません。
まず目的のフォルダにあるファイル一覧を取得してそこからファイル名で検索します。

202207_議事録.txt
202208_議事録.txt ←8月のファイルを取得予定

新しいステップでSharePointの「フォルダーの一覧」を選択。

2つ設定します。

サイトのアドレス:https://xxxx.sharepoint.com/sites/tttt
ファイル識別子 :/DocLib

SharePointで取得したいファイルのあるフォルダを開くと分かります。
https://xxxx.sharepoint.com/sites/tttt/DocLib/Forms/AllItems.aspx

アクション「フォルダーの一覧」で取得したデータです。

後の処理ではIdとNameの2つを使います。

   "Id": "%252fDocLib%xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.txt",
   "Name": "202208_議事録.txt",

(2)ファイル名でフィルタする

ファイル一覧の取得が終わりました。ここでは目的のファイル名ででフィルタして、そのファイルIDを取得します。

新しいステップでデータ操作の「作成」を選択。名前の変更で「ファイル名」を入力。

データ操作-作成

1つ設定する。

入力:式に formatDateTime(triggerBody()[‘key-button-date’],’yyyyMM’)

この式はフローを実行した日付を「202208」の形式で表示します。
この後のファイル名をフィルタする条件として使います。

式の説明

formatDateTime(triggerBody()[‘key-button-date’],’yyyyMM’)

  • formatDateTime 引数1にタイムスタンプを指定。引数2の形式に変換する。 例:formatDateTime(‘2022/01/01′,’yyyyMM’)だと「202201」
  • triggerBody()[‘key-button-date’] フローを実行した情報のタイムスタンプを返す。

新しいステップでデータ操作の「アレイのフィルター処理」を選択。

データ操作-アレイのフィルタ処理

>>アレイのフィルター処理の詳しい使い方

4つ設定する。

上:動的なコンテンツにあるフォルダーの一覧の「body」
左:式に item()?[‘Name’]
中:次の値を含む
右:動的なコンテンツにあるファイル名の「出力」

これは「202208」が入っているファイル名を指定する条件です。

複数の条件でフィルタしたい場合

2つの条件を含むファイル

条件1:yyyymm(当月)
条件2:.txt

「詳細設定モードで編集」を押す

下に式を入力する。

@and(contains(item()?['Name'], outputs('ファイル名')),contains(item()?['Name'], '.txt'))

これで2つの条件を含むファイルがフィルタされます。

新しいステップでデータ操作の「作成」を選択。名前の変更で「ファイルID」を入力。

データ操作-作成

1つ設定します。

入力:式に first(body(‘アレイのフィルター処理’))?[‘Id’]

1つ前のアクションでフィルターしましたが、まだデータが配列の型のままです。
first関数で配列の1つ目のデータだけを取り出します。

式の説明

first(body(‘アレイのフィルター処理’))?[‘Id’]

  • first ()の中にある配列の最初の要素を返します。 first(createArray(‘a’, ‘b’))だと「a」になります。
  • body(‘アレイのフィルター処理’) 変数「アレイのフィルター処理」の値を返します。
  • ?[‘Id’] コレクションのキー名「Id」の値を返します。

これで「202208_議事録.txt」のファイルIDを取得できました。

(3)テキスト抽出

ファイルIDを指定してテキストファイルの内容を取得します。

新しいステップでSharePointの「ファイルコンテンツの取得」を選択。

2か所入力します。

サイトのアドレス:https://xxxx.sharepoint.com/sites/tttt
ファイル識別子 :動的なコンテンツにあるファイルIDの「出力」

サイトのアドレスはSharePointで取得したいファイルのあるフォルダを開くと分かります。https://xxxx.sharepoint.com/sites/tttt/DocLib/Forms/AllItems.aspx
ファイル拡張子は先ほど取得したファイルIDを指定しています。

取得した内容がこちらです。

このままメールで送れそうですが、メール送信の場合は改行コードを変換する必要があるのでこの後説明します。

似ているアクションに「パスによるファイルコンテンツの取得」があります。
ファイル識別子ではなくパスを指定するので、ファイル名が決まっている場合はこちらがオススメです。

みずしぶき
みずしぶき

今回のフローはファイルIDを取得するので「ファイルコンテンツの取得」を使いましたが、どちらでも結果は同じです。
慣れてきたら2つ試して、好きな方を使うようにしてください。

次はテキストデータの改行を処理する方法を説明します。

(4)改行コードを置換

取得したデータをそのままメール本文として使うと、改行されない文章になってしまいます。
これはPowerAutomateとメールの改行の認識が違うからです。これを解消させるために、改行コードを全て<br>に置換します。

新しいステップでデータ操作の「作成」を選択。名前の変更で「改行コード置換」を入力。

データ操作-作成

式を入力します。

replace(outputs('ファイル_コンテンツの取得')?['body'],decodeUriComponent('%0A'),'<br>')

この式は表示されない文字(改行コード)を<br>に置換します。

式の説明
replace(outputs('ファイル_コンテンツの取得')?['body'],decodeUriComponent('%0A'),'<br>')
  • replace 引数1から引数2を検索して引数3へ置換します。 この式だと改行コードを<br>へ置換します。
  • outputs(‘ファイル_コンテンツの取得’)?[‘body’] 作成(名前「ファイル_コンテンツの取得」)の内容を返します。
  • decodeUriComponent ()の中にある文字を文字に変換します。 ’%0A’は改行コードになります。

テキストファイルの作り方によっては改行コードを変える必要があります。
上の式で置換が正しく行われない場合はこちらの式を試してください。

replace(outputs('ファイル_コンテンツの取得')?['body'],decodeUriComponent('%0D%0A'),'<br>')

新しいステップでOutlookの「メールの送信(V2)」を選択。

3つ設定

宛先:送信したいメールアドレス
件名:今月の議事録
本文:動的なコンテンツにある改行コード置換の「出力」

保存を押してフローの完成です。

完成したフローはこちら。

フローを動かす

テストでフローを実行します。

テキストファイルの内容がメールで届きました。

もし改行されていなければ改行コードを置換するを確認し直してください。

スポンサーリンク

まとめ

SharePointのテキストファイルの内容をメール送信する方法を4ステップで説明しました。

  • フローの動き
  • フロー作成前の準備
  • フローを作る
  • フローを動かす

「アレイのフィルター処理」で目的のファイル名をフィルターしてテキストを抽出できました。テキストファイルの取得は単純に見えて文字化け対策改行処理と引っかかる部分が多いので気を付けましょう。

PowerAutomateのおすすめ記事
人気ページ
Apply to eachの使い方
アレイのフィルター処理の使い方
日付関数の使い方
エラーを無視する方法
メールの内容をExcelへ転記
メール本文から名前を抽出

>>PowerAutomateの記事一覧を見る<<

お気に入り必須!公式ページ
Microsoft Power Automate
式関数のリファレンス
コネクタのリファレンス
Excel Online (Business)のリファレンス

最後まで読んで頂き、ありがとうございます。

「この記事が参考になった」「お礼でコーヒー代をプレゼントしよう」という方がいましたらチップ(15円〜)をお願いいたします。

Amazonギフト券- Eメールタイプ - Amazonベーシック

メールのあて先は 「mizusibuki8080@gmail.com」です。
※上記のアドレスは投げ銭受け取り専用です。他のメールは受け取れない設定にしてあるのでご注意ください。

作業を自動化する
ネットワークエンジニアになった人
タイトルとURLをコピーしました