- プログラミングは分からないけど自動化したい
- PowerAutomateの使い方がイマイチ分からない
- SharePointのテキストファイルを取得したい
無料ツールでさらにノンプログラミングで自動化ができるならぜひやってみたい!
この記事では、そんな方に向けてSharePointのテキストファイルの内容をメール送信する方法を4ステップで説明します。
- フローの動き
- フロー作成前の準備
- フローを作る
- フローを動かす

この記事を読めば、SharePointからテキストファイルの取得方法がわかるようになります。
文字化けの対処や改行コードの置換もしているので必見です。
まだPowerAutomateを使った事が無いという方はこちらの記事を参考にしてください。
PowerAutomateはブラウザで操作するのでインストール無しで利用できます。Windows10ではないMacユーザも自由に使えます。
私がPowerAutomateの勉強で実際に読んだ本を紹介します。フローの動き
このフローでは「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」の形式で表示します。
この後のファイル名をフィルタする条件として使います。

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の記事まとめ
まだ試してないアクションがあれば見ておきましょう。
初心者向け
【初心者向け】PowerAutomateの使い方。無料で誰でも使えます。
基本的なアクション
【PowerAutomate】メールの添付ファイルをOneDriveへ保存する。
【PowerAutomate】Excelのデータをメールで送信する。
【PowerAutomate】メールを受信したらExcelにデータを入力する。
アクションの応用
【PowerAutomate】第1~5○曜日の日付を求める。
【PowerAutomate】メール本文から名前を抽出する。文字列抽出のキホン。
【PowerAutomate】ソートするフローを作る。配列の並べ替え。
【PowerAutomate】SharePointのリストから列と行をフィルターして表にする。
【PowerAutomate】ExcelからSharePointのリストに一括転記する
【PowerAutomate】SharePointのテキストファイルに改行を付けてメール送信
関数・アクション
【PowerAutomate】日付の関数まとめ。月末月初やExcelシリアル値変換など。
【PowerAutomate】Apply to eachの使い方。勝手に出てくる原因や遅い時の高速化など!
今の勉強法に満足していますか?
やりたい事はネットで調べてなんとか対処しているという方が多いと思います。
私も元々はネットから情報を得ていましたが、知識が少なく調べる事ばかりで作業が進まなく悩んでいました。一度専門書を買ってみると勉強に集中できネットより遥かに理解が早かったと感じました。
とはいっても何冊も本を買うとお金も場所も取ります。そこでAmazonが提供するKindle Unlimitedという読み放題のサービス。PCやスマホどちらでも使え、月額980円で毎月1~2冊読めば元がとれたので本代の節約になりました。
確かにネットの情報量は多いのでほしい情報は見つかります。でも、ネットで自分の求めている情報を探すのは時間がかかります。気になる事を都度調べるのは効率悪くないですか?
ではどうしたらいいのでしょうか。
それは基礎知識を学ぶ事です。
専門書は初心者向けから上級者向けまでレベル別で出版されているので、求めている内容がそこにありました。
Kindle unlimitedはラインナップが勝手に変わるという予測できない点はありますが、読みたくなった今すぐに読める点が私にはドハマりでした。
初回30日無料なので今すぐに読みたい本がある方はお試しでも利用できます。Kindle Unlimitedは200万冊以上の本が読めるそうです!
ネットの検索時間から解放され、本来の目的に集中しましょう。
\30日間無料/