- プログラミングは分からないけど自動化したい
- PowerAutomateの使い方がイマイチ分からない
- SharePointのテキストファイルを取得したい
無料ツールでさらにノンプログラミングで自動化ができるならぜひやってみたい!
この記事では、そんな方に向けてSharePointのテキストファイルの内容をメール送信する方法を4ステップで説明します。
- フローの動き
- フロー作成前の準備
- フローを作る
- フローを動かす
この記事を読めば、SharePointからテキストファイルの取得方法がわかるようになります。
文字化けの対処や改行コードの置換もしているので必見です。
まだPowerAutomateを使った事が無いという方はこちらの記事を参考にしてください。
PowerAutomateはブラウザで操作するのでインストール無しで利用できます。Windows10ではないMacユーザも自由に使えます。
フローの動き
このフローでは「yyyymm」の日付が付くファイルを取得します。
例えば2022年8月に動かすと、ファイル名に「202208」が含まれるファイルを取得します。
動きを確認する為に2つファイルを用意しました。
202207_議事録.txt
202208_議事録.txt
それではフローを動かしてみます。
成功しました。
取得する予定のファイル内容はこちらです。
予定通りメールが届きました。
フローの動きは以上です。
このフローで指定した内容は3つ
- フォルダ ・・/DocLib
- ファイル名の条件 ・・当月(yyyymm)
- メールアドレス ・・xxxx@yahoo.co.jp
この値を自由に変えると誰でも使えるようになっています。
このフローの特徴はテキストファイルを添付するのではなく、内容をメール本文に入力する部分です。
SharePointでもテキストファイルは使われるので覚えていると重宝します。
文字化けの対処や改行コードの置換も説明します。
フロー作成前の準備
準備の内容は2つです。
- テキストファイルの作成 ←文字コードはUTF8
- SharePointへアップロード
テキストファイルを作成、文字コード「UTF-8」を指定して保存します。
これは文字コードを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」の形式で表示します。
この後のファイル名をフィルタする条件として使います。
新しいステップでデータ操作の「アレイのフィルター処理」を選択。
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つ目のデータだけを取り出します。
これで「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('%0D%0A'),'<br>')
新しいステップでOutlookの「メールの送信(V2)」を選択。
3つ設定
宛先:送信したいメールアドレス
件名:今月の議事録
本文:動的なコンテンツにある改行コード置換の「出力」
保存を押してフローの完成です。
完成したフローはこちら。
フローを動かす
テストでフローを実行します。
テキストファイルの内容がメールで届きました。
もし改行されていなければ改行コードを置換するを確認し直してください。
まとめ
SharePointのテキストファイルの内容をメール送信する方法を4ステップで説明しました。
- フローの動き
- フロー作成前の準備
- フローを作る
- フローを動かす
「アレイのフィルター処理」で目的のファイル名をフィルターしてテキストを抽出できました。テキストファイルの取得は単純に見えて文字化け対策・改行処理と引っかかる部分が多いので気を付けましょう。
PowerAutomateのおすすめ記事
人気ページ
Apply to eachの使い方
アレイのフィルター処理の使い方
日付関数の使い方
エラーを無視する方法
メールの内容をExcelへ転記
メール本文から名前を抽出
>>PowerAutomateの記事一覧を見る<<
お気に入り必須!公式ページ
Microsoft Power Automate
式関数のリファレンス
コネクタのリファレンス
Excel Online (Business)のリファレンス