演習 - スケジュールに従って SharePoint リストをアーカイブする
前の演習では、他のシステムのアクションによってトリガーされる自動化したクラウド フローを作成しました。具体的には、SharePoint リストに新しい項目が作成されることがトリガーとなります。 また、他の方法を利用して、Power Automate でフローを開始することもできます。 この演習では、SharePoint のデータを定期的に自動でアーカイブするようにスケジュールしたクラウド フローの作成方法を学習します。
前の 演習: SharePoint に項目が追加されたときに Teams メッセージを送信する ユニットと同じ問題トラッカー リストを使用するため、このユニットの最初の手順を実行して、ソース リストの設定が既に完了していることを確認してください。 ソース リストを作成した後に、アーカイブとして使用するアーカイブ先リストを作成できます。
空のアーカイブ リストを作成する
空のアーカイブ リストを作成するには、次の手順を実行します。
- SharePoint サイトで、新規 > リスト を選択します。
- この新しいアーカイブ リストを古いリストのスキーマと正確に一致させる必要があるため、既存のリストから を選択します。
- 選択肢から 問題トラッカー を見つけて選択し、次へ を選択します。
- リストに 問題トラッカー アーカイブ という名前を付け、作成 を選択します。
これらの手順は SharePoint でのみ実行する手順です。 演習の残りの部分は Power Automate で実行します。
フローの作成
フローを作成するには、次の手順に従います。
https://make.powerautomate.com にアクセスし、作成 > スケジュール済みクラウド フロー を選択します。
フローに、問題トラッカー データのアーカイブ などのわかりやすい名前を付けます。
フローの実行を開始する開始日を選択し、アーカイブの更新に適した時間に設定します。 リストに対するアクティビティがあまり発生しないダウン タイム (深夜など) を選択することを検討してください。 この演習では、日時は重要ではないため、将来の日付と午前 1 時を選択します。
ヒント
予定フローは、最短でも 1 分間に 1 回までしか実行できません。 ただし、増分時間のドロップダウン メニューには 秒 が用意されており、このインターフェイスでは、たとえば 1 秒ごとや 10 秒ごとに繰り返す予定フローを作成することは可能です。 問題が発生したことがわかるタイミングは、フローを保存しようとしたときのみです。その時点でエラーがスローされます。 繰り返し トリガーを 60 秒以上 に更新してから保存する必要があります。 秒 オプションが用意されているのは、90 秒ごと、318 秒ごと、またはアプリケーションに必要な任意のタイミングで実行するなど、より細かいスケジュール設定を可能にするためです。 秒 オプションを使用してフローの繰り返しをスケジュールする場合、秒数は 60 秒以上にする必要があります。
リストがどの程度アクティブになるかに応じて、自分に適した繰り返しスケジュールを選択します。 多くのアプリケーションでは、1 日 1 回が適切な選択肢と考えられるため、それに該当するオプションを選択して、作成 を選択します。
アクションを追加する前に、このフローの全体的な戦略を確認してください。 アーカイブ フローを使用すると、次の処理を実行できます。
- ソース リストからアーカイブ先に新しい項目を追加する。
- ソース リストに対して項目の追加や更新の確認を行い、アーカイブ内の対応する項目を更新する。
- 新しい項目の追加や、更新された項目の新しいコピーの追加を行い、変更の記録を保存するために元の項目はそのまま維持する。
この演習では、3 番目の処理を行います。
項目の取得 アクションを追加する
項目の取得 アクションを使用すると、アーカイブ リスト内の最新の項目を見つけることができます。 その項目の作成日には、フローによってアーカイブに項目が追加された最新の日時が表示されます。 この日時は、アーカイブするソース リスト内の新しい項目を見つけるための開始点となります。 フローを初めて実行するときにアーカイブ リストが空の場合、この問題に対処するための回避策があります。これについては、このモジュールで後ほど説明します。
繰り返し で、プラス (+) アイコンを選択し、アクションの追加 を選択します。
検索ボックスで、SharePoint 見出しの下にある 項目の取得 アクションを検索し選択します。
サイト アドレス を選択し、自分の SharePoint サイトを探します。
リスト名 を選択し、ソースではなく アーカイブ リストの名前を探します。
詳細パラメーター ドロップダウン メニューの横にある すべて表示 を選択し、このアクションの追加パラメーターを表示します。
このアクションを使用して、アーカイブ リスト内にある最新の項目の作成日時を取得します。 ここでは、取得する項目 は 1 つのみですが、最新の項目である必要があります。 これを行うには、次の情報を入力して、シンプルな ODATA クエリを使用できます。
並べ替え順 フィールドに、作成 desc と入力します。
注
この ODATA クエリは、SharePoint の datetime 型である 作成 フィールドで並べ替えることをアクションに指示します。 desc は降順のコードであり、最も新しい項目がリストの最初に表示されます。 その順序を逆にするには、昇順を意味する省略表記の asc を使用します。
上位カウント フィールドに、1 と入力します。
注
上位カウント は、返されるレコードの最大数を示します。 必要なのは最新のレコード 1 件のみです。したがって、このフィールドには 1 と入力します。
作成日時を格納する変数を初期化する
フローの後半では、別の 項目の取得 アクションによって、アーカイブ リスト内の最新項目よりも後の 作成 日 や 変更 日を持つすべての項目がソース リストから取得されます。 この開始点を決定するために、varCreatedDatetime 変数を使用します。 ただし、アーカイブ リストが空の場合 (フローを初めて実行する場合など)、開始の datetime 値を提供する項目が存在しません。 この場合、変数を古い日付 (1900 年 1 月 1 日 など) に設定して、ソース リスト内にあるすべての項目が含まれるようにします。 この日付は ISO 8601 UTC 形式で書式設定されます。これは、SharePoint が datetime 値を格納するために使用する標準の形式です。
項目の取得 で、プラス (+) アイコンを選択し、アクションの追加 を選択します。
検索ボックスで、変数 ヘッダーの下にある 変数の初期化 を検索し選択します。
名前 を選択し、varCreatedDatetime と入力します。
種類 ドロップダウン メニューを選択し、文字列 を選択します。
値 を選択し、値 1900-01-01T00:00:00Z を貼り付けます
項目がアーカイブ リストにある場合、varCreatedDatetime 変数を設定する
項目がアーカイブ リストにある場合に varCreatedDatetime 変数を設定するには、次の手順を実行します。
- 変数の初期化 で、プラス (+) アイコンを選択し、アクションの追加 を選択します。
- 検索ボックスで、リストから 変数の設定 オプションを検索して選択します。
- 名前 ドロップダウン メニューを選択し、varCreatedDatetime を選択します。
- 値 を選択し、稲妻 アイコンを選択します。
- 検索 ボックスに、作成 と入力します。
- 項目の取得 アクションのいくつかのフィールドには、作成 という単語が含まれています。 作成者 ではなく、作成 のみを含むフィールドを選択してください。
この時点で、Power Automate によって For each ループが自動的に作成され、その中に 変数の設定 アクションが配置されます。 Power Automate を初めてご利用の場合、これは予期しない動作に思われるでしょう。こうした動作をする理由は、項目の取得 アクションによって項目のリスト (配列と呼ばれます) が返されためです。 配列に別のアクションを適用すると、Power Automate によってループが作成され、配列内の各項目が処理されます。 上位カウント を 1 に制限しなかった場合、項目の取得 アクションによってアーカイブ リスト内のすべての項目が返されます。また、Power Automate では各項目がループ処理され、リストに含まれるすべての項目の 作成 の日付で varCreatedDatetime 変数が更新されます。 ここでは結果を 1 に制限したため、ループは 1 回だけ実行されます (varCreatedDatetime が最新項目の 作成 の日付に設定されます)。また、アーカイブ リストが空の場合は、ループはまったく実行されません。 ループが実行されない場合、変数は既定値の 1900 年 1 月 1 日のままになります。
別の 項目の取得 アクションを追加する
次に、作成 や 変更 の datetime 値が varCreatedDatetime よりも新しい値になっている項目をソース リストから取得する必要があります。
項目の取得 アクションを再度追加するのではなく、Power Automate のコピー/貼り付け機能を使用できます。 そのためには、項目の取得 カードを右クリックし、アクションのコピー を選択します。
For each ループの下にあるプラス (+) アイコンをクリックします (変数の設定 の下ではなく、For each ループの周囲にある境界ボックスの下です)。 アクションの貼り付け を選択します。 ここで、項目の取得 - コピー アクションが画面に表示されます。 フローに同じアクションのバリエーションが多数ある場合は、それらのアクションを明確に区別するために、名前を変更することをお勧めします。 この方法は、他のアクションの動的データを選択するときに、どのフィールドがどのアクションに関連しているかを把握する必要がある場合に特に役立ちます。 したがって、続行する前に、次のように名前を更新する必要があります。
- 最初の 項目の取得 カードを選択します。 左側に開いたパラメーター ブレードで、画面上部にある 項目の取得 というタイトルを選択します。 プレーン テキストはテキスト入力に変わるので、名前を変更できます。 アクションの名前はそのままにしておきますが、ハイフンとわかりやすいタイトルを追加して、別のタイトルにします。たとえば、項目の取得 - 最新のアーカイブ レコード のようにします。
- 項目の取得 - コピー カードを選択し、項目の取得 - アーカイブするソース項目 という名前に変更して、このカードを更新します。
項目の取得 - アーカイブするソース項目 アクションから移動せずに、リスト名 をソース リストである 問題トラッカー に変更します。
詳細パラメーター の右にある すべて表示 を選択します。
並べ替え順 パラメーターと 上位カウント パラメーターを削除します。これらはこのアクションでは必要ありません。 そのためには、入力フィールドの右にある X を選択するか、各フィールドのテキストを選択して削除します。
アーカイブ リストの最新項目よりも新しい項目のみを取得するには、OData クエリを作成する必要があります。 クエリでは、作成 や 変更 の条件に基づいてフィルター処理する必要があります。これは、フローでは前回のバックアップ以降に作成された項目と、前回のバックアップ以降に変更された項目を取得するためです。
フィルター クエリ 入力フィールドを選択します。
作成 gt '' または 変更 gt '' と入力します。
注
gt の後に 1 つの二重引用符ではなく、2 つの単一引用符を指定することに注意してください。 不明な場合は、この手順からコピーして貼り付けてください。
最初の単一引用符のセットの間にカーソルを置き、稲妻 アイコンを選択します。
変数 の見出しの下にある varCreatedDatetime を選択します。
同じ手順を繰り返します。Modified gt の後の単一引用符の間にカーソルを置き、varCreatedDatetime を選択します。
項目の作成 アクションを追加する
次に、項目の取得 - アーカイブするソース項目 アクションで収集したすべての項目をループ処理し、項目の作成 アクションを使用して各項目をアーカイブ リストにコピーします。 項目の作成 アクションは、次のスクリーンショットのようになります。
項目の取得 - アーカイブするソース項目 で、プラス (+) アイコンを選択し、アクションの追加 を選択します。
検索ボックスで、SharePoint 見出しの下にある 項目の作成 アクションを検索し選択します。
サイト アドレス を選択し、自分の SharePoint サイトを探します。
リスト名 を選択し、ソースではなく アーカイブ リストの名前を探します。
詳細パラメーター ドロップダウン メニューの横にある すべて表示 を選択し、このアクションの追加パラメーターを表示します。
タイトル フィールドを選択し、稲妻 アイコンを選択して、検索 ボックスに タイトル と入力します。
項目の取得 - アーカイブするソース項目 見出しの下にあるリストから、タイトル を選択します。
システムでは、項目の取得 - アーカイブするソース項目 アクションによって返されたすべての項目にこのアクションが適用されるため、Power Automate では、For each ループが自動的に作成され、そのループ内に 項目の作成 アクションが配置されます。 これは想定された動作です。 このアクションを手動で完成させることもできます。そのためには、最初に独自の 個々に適用 アクションを作成して、その中に 項目の作成 を配置します。ただしこの場合、Power Automate に自動的に処理させることが最も簡単な方法です。
項目の作成 アクションの タイトル の下にある次のフィールドは 問題の説明 で、その下に残りの列が続きます。 各列について、次のアクションを完成させてください。
フィールドを選択し、稲妻 アイコンを選択して、検索 ボックスで列の名前を検索します。
項目の取得 - アーカイブするソース項目 見出しの下で、一致する名前を見つけ、選択します。
いくつかの列は、選択肢列またはルックアップ列であり、それらは別の方法で処理する必要があります。 たとえば、優先度の値 と 状態の値 は選択肢列で、割り当て先 (クレーム担当) はルックアップ列です。
各列について、フィールドの見出しの下にあるドロップダウン メニューを選択し、必要に応じてリストの一番下までスクロールして、カスタム値の入力 を選択します。 次に、稲妻 アイコンを選択し、項目の取得 - アーカイブするソース項目 から一致するアイテムを選択する手順を通常どおり進めます。
選択肢列を操作する場合は、必ず 値 を示すフィールドを選択してください (たとえば、優先度 ではなく 優先度の値 を選択します)。 この情報は、SharePoint で選択肢列がどのように保存されるかを把握する際に重要となります。
項目の作成 アクションの各列をソース リストの正しい列にマップしたら、フローを保存してテストできます。 テストを実行する前に、アーカイブ リストが空であり、ソース リストに少なくとも 1 行または 2 行のデータが表示されていることを確認してください。 その後で、次の手順を実行してフローをテストします。
- 保存 を選択します。
- テスト を選択します。
- 手動 を選択します。
- テスト を選択します。
- フローの実行 を選択します。
- 完了 を選択します。
しばらくすると、フローが実行され、フローの上部に フローが正常に実行されました というメッセージと共に緑色のバナーが表示されます。 次に進む前に、フローの実行履歴の情報が多岐にわたっていることに注目してください。また、テスト実行の成功や失敗を確認することで、フローの機能 (特に、正常に機能しない場合) について多くのことを理解することができます。
今回が初めてのフロー実行であり、アーカイブ リストは空であったため、varCreatedDatetime 変数は既定の日付である 1900 年 1 月 1 日のままになっています。 この結果は、最初の For each ループで明らかになっています。このループでは、変数の設定 アクションの右上隅に スキップ アイコンが表示され、アクションがスキップされたことを示しています。
アーカイブ リストにデータが入力されたときの変化を確認するには、次の手順を実行します。
- アーカイブ SharePoint リストに移動し、リストを更新します。 ソース リストにあるすべての項目のコピーが表示されます。
- ソース リストに移動し、別の項目を追加します。
- フローに戻り、編集 を選択します。
- テスト > 手動 > テスト > フローの実行 > 完了 の順に選択します。
- 今回は、最初の For each ループの下に 1/1 のインジケーターが表示され、変数の設定 の右上隅に緑色のチェック マークが表示されます。 これらのコンポーネントの表示は、For each アクションが 項目の取得 - 最新のアーカイブ レコード アクションから処理する項目を取得し、varCreatedDatetime をその項目の 作成 の datetime 値に設定したことを示しています。
- アーカイブ リストを更新します。 新しい項目がリストに追加された状態で表示されます。 項目の重複がないことを確認します。 重複が表示された場合は、項目の取得 - アーカイブするソース項目 のフィルター クエリに問題が発生した可能性があります。
- 最終テストとして、ソース リストにある既存のレコードの 1 つを変更します。これにより、システムによって新しいコピーがアーカイブに強制的に追加され、元のレコードはそのまま残ります。
- ソース リストに戻り、レコードの 1 つを選択して、その項目 (問題の説明や優先度など) を変更します。 フローに戻る前に、必ず変更をコミットしてください。
- フローに戻り、編集 を選択します。
- テスト > 手動 > テスト > フローの実行 > 完了 の順に選択します。
- アーカイブ リストを確認します。 変更された項目の新しいコピーが表示され、元のアイテムはそのまま残り、重複は表示されません。
この演習では、SharePoint でデータをアーカイブする処理を自動化する場合に、実際のシナリオで使用できるサンプル フローを完成させました。 フローの 繰り返し を次の 24 時間以内に実行するように設定した場合、ソース リストにいくつかの項目を追加し、翌日になったら、フローがスケジュールどおりに実行され、アーカイブが更新されたかどうかを確認します。 お疲れさまでした。プロのような自動化ができています。