【Power Automateではじめる業務の完全自動化】実務直結のノウハウが満載! 本連載では、企業へのMicrosoft 365の導入や活用支援を手がける著者・太田浩史氏による、Power Automateを使った業務自動化のノウハウを提供します。

第4章|身近な業務に役立つフローで効率化
LESSON 18

SharePointリストで管理している古いデータを一括削除

SharePointリストのデータをまとめて処理することもできます。スケジュールに応じて定期的にするトリガーと組み合わせることで、夜間や早朝などの決められた時間に処理を実行できます。例として、古いデータをまとめて削除するフローを作成しましょう。

完了日が古いタスクを自動で削除する

ここではSharePointリストに入力されている古いアイテムを削除するフローを作成します。例として案件の進捗管理のために、営業部門のSharePointサイトに「タスク」リストを作成している状況を基に説明を進めます。このリストは、登録されているタスクが完了すると、その日の日付を完了日として入力するようルール化されています。また、登録されているタスク数が増えすぎないように、完了日が古いものについては気が付いたときに手動で削除しています。フローを作成することで、こうした古いタスクを自動的に削除でき、作業の手間を省けます。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

SharePointにフロー実行用のリストを用意

SharePointサイトにタスクを管理するためのリストを作成します。フローから利用する「完了日」列を必ず追加してください。ここでは「できる営業部」というサイトにリストを作成していますが、リストを作成するサイトはどこでも問題ありません。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

[進捗]列の設定

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

ここもポイント!SharePointサイトのタイムゾーンにも注意

リストやライブラリの、アイテムの更新日や登録日などの[日付と時刻]列の値が実際の時間とずれていることがあります。これは、サイトのタイムゾーンが適切に設定されていないためです。サイトの設定にある[地域の設定]から変更できます。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

スケジュールトリガーで毎日自動実行

今回作成するフローは、毎日朝8時に実行し、古いアイテムを削除します。定期的に実行するためには、[スケジュール]トリガーを利用します。[スケジュール済みクラウドフロー]から、フローの[開始日]や[繰り返し間隔]を設定しましょう。毎日実行したいので、[繰り返し間隔]は「1日」です。実行される時間は、[開始時間]の[時間]に設定します。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

アイテムを削除する基準となる時間を取得

古いアイテムをSharePointリストから削除するためには、リストに登録されたアイテムのうち、削除したいアイテムだけをフィルターして取得する必要があります。「古い」の基準となる日付を取得するために、[日時]コネクタの[過去の時間の取得]アクションを利用します。このアクションは、フローの実行時刻から指定した時間だけ過去に遡った日時を取得できます。例えば、[間隔]を「14」、[時間単位]を「日」に設定すれば、フロー実行時点の14日前の日時を出力します。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

[過去の時間の取得]アクション

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

「14」と入力
[日]を選択

リストから削除対象のアイテムを取得

SharePointリストからアイテムを取得するには、[SharePoint]コネクタの[複数の項目の取得]アクションが利用できます。 アクションの設定で、[サイトのアドレス]や[リスト名]で削除したいアイテムのあるリストを指定しただけでは、リストに保存されたすべてのアイテムを取得しようとしてしまうため、フィルターを設定して削除対象のアイテムのみに絞ります。そのためには、詳細オプションを表示し[フィルタークエリ]を設定します。この設定は「ODataフィルタークエリ」と呼ばれる、ちょっと特殊な記述方法が必要です。例えば今回の場合は次のように設定することで、リストの[完了日]列に入力された日付が、指定された日付よりも古いものを取得するようになります。

[フィルタークエリ]に設定するODataフィルタークエリ

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

これだけ見ても何のことか分かりませんよね。しかしここを理解すると、[SharePoint]コネクタをさらに使いこなせるようになります。次のSECTIONで詳しく解説します。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

ODataフィルタークエリとは?

[フィルタークエリ]に設定するODataフィルタークエリは、SharePointリストから条件に合ったアイテムを取得するための条件を表します。これにより例えば、金額列の値が500よりも大きなアイテム、進捗列に未着手が入力されているアイテムなどに絞り込んで取得できます。

ODataフィルタークエリでは、比較演算子と呼ばれる特殊な表記を挟んでいる左辺と右辺の値を比較できます。比較演算子には、eq、ne、lt、gtなどさまざまな条件が利用できます。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

よく利用される比較演算子

比較演算子 説明
eq 左辺が右辺と等しい(Equal)
ne 左辺が右辺と等しくない(Not Equal)
gt 左辺が右辺より大きい(Greater than)
lt 左辺が右辺より小さい(Less than)
ge 左辺が右辺以上(Greater than or equal)
le 左辺が右辺以下(Less than or equal)

「and」や「or」を用いることで、複数の条件を組み合わせたフィルターを行うことができます。また、比較対象が文字列や日時の値の場合は、シングルコーテーションで値を囲む必要がある点に注意しましょう。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

SharePointリスト列の表示名と内部名

さて、アクションに設定したODataフィルタークエリのもう1つの疑問は、左辺に登場する「OData__x5b8c__x4e86__x65e5_」という謎の文字列ではないでしょうか。これを理解するには、SharePointのリストやライブラリの列は、表示名と内部名の2つの名前を持つことを知っておく必要があります。

今回のアイテムの取得対象としている列は、それぞれ次のような表示名と内部名を持っています。表示名は、その名の通り画面に表示されている列名です。一方の内部名は、プログラムなどからアクセスするときに必要な列名になっています。

今回作成したリストの列の内部名

表示名 内部名
タイトル Title
担当者 _x62c5__x5f53__x8005_
期日 _x671f__x65e5_
進捗 _x9032__x6357_
完了日 _x5b8c__x4e86__x65e5_

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

内部名の確認方法

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

内部名を確認するには、SharePointリストを開き、[リストの設定]を確認しましょう。リストの設定画面の中ほどにある[列]の一覧から、内部名を確認したい列をクリックします。すると列の編集画面が開きますが、このときのURLにある「Field=」の後ろの文字列が列の内部名です。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

さらに、Power AutomateからODataフィルタークエリで利用する場合は、内部名の先頭に「OData_」の接頭語を付けなければならない場合があります。それは、列の内部名が「_」から始まっている場合です。例えば「完了日」の内部名は、「_x5b8c__x4e86__x65e5_」のように「_」からはじまるため、接頭語を付けて「OData__x5b8c__x4e86__x65e5_」とする必要があります。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

ここもポイント!内部名の文字列を分かりやすくするには

リストやライブラリで列を作成する場合、日本語や記号、数字のようなアルファベット以外からはじまる列名を付けてしまうと、内部名が非常に分かりづらいものになってしまいます。そのため、Power Automateからも利用しようと考える列の場合は、列作成時はアルファベットのみで名前を付けておくテクニックもあります。作成後に表示名を日本語に変えても内部名は分かりやすいアルファベット表記のままなので、ODataフィルタークエリなどを記述するときに格段に楽になります。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

取得したアイテムを削除

リストから削除対象となるアイテムを取得できたので、このアイテムを削除していきます。削除するには、[SharePoint]コネクタの[項目の削除]アクションを利用します。アクションを追加したら、削除するアイテムがあるリストを指定するように、[サイトのアドレス]と[リスト名]を設定しましょう。[ID]には、[複数の項目の取得]アクションから出力される[ID]を指定します。これで、あらかじめ取得しておいた削除対象のアイテムを削除できます。このとき、Power Automateが自動的に[Apply to each]の反復処理を追加してくれます。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

項目の削除]アクション

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

削除対象のSharePointリストがあるサイトとリスト名を選択
[複数の項目の取得]アクションの動的なコンテンツから[ID]を選択

さて、フローを作成したらテスト実行してみましょう。フローが正常に動作すれば、元から登録されているアイテムのうち、完了日が14日前より古いアイテムが削除されているはずです。テストが上手くいったら、トリガーで設定した時間まで待ってみて、スケジュール通り動作するかも確認してみましょう。

フローをテスト実行する

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

達人のノウハウ試行錯誤しながら少しずつ完成に近付ける

教わりながら手順通りにフローは作成できても、それを一から作成するのは難しいと感じることもあります。その原因の多くは、フローは順番通りに間違えずアクションを追加して作成するものだと思っていることにあります。教わる手順のほとんどは、すでに完成したフローの作成手順です。自分で一から考えてフローを作成するのとは異なることがあります。一から作成できるようになるためには、試行錯誤の方法を覚えることが大切です。アクションを並び替えたり途中に新しく追加したりしながら、何度も動作を確認します。順番通りに追加してすんなり完成とはなりません。アクションや設定を変えて何度も動かし、少しずつ目的の動作に近付けていきましょう。教わった手順の裏側にもこうした試行錯誤が隠れています。

関連記事