演習 - SQL を使用するフローを構築する

完了

このユニットでは、ソースを監視することで新規または変更された項目を検出し、それらの変更をターゲットにコピーするというフローの作成方法を示します。 このタイプのフローの作成は、ユーザーがデータをある場所で入力し、チームがそのデータを異なる場所または形式で必要とする場合に適しています。

このユニットでは、Microsoft Lists (ソース) から Microsoft Azure SQL Database テーブル (ターゲット) にデータをコピーします。

Power Automate でサポートされる 数百種類を超えるサービス上でデータをコピーできることに注意してください。

重要

双方向の同期はサポートされていないため、ターゲットで加えられた変更はソースにはコピーされません。 双方向の同期を設定する場合は、ソースとターゲットの間で変更が際限なく送信される無限ループを作成します。

前提条件

  • データ ソースとターゲットにアクセスできる。 このユニットには、ソースとターゲットを作成する手順は含まれていません。

  • Power Automate へのアクセス

  • ご利用のデータの格納方法の基本を理解している。

  • フロー作成の基本を理解している。 このユニットでは、これらのアクションの実行方法を把握していることを前提とします。

ヒント

(列のデータ型が選択でない限り) ソース内とターゲット内の列名が一致する必要はありませんが、項目の挿入または更新を行う際には、必須の列すべてにデータを入力する必要があります。 必須のフィールドは、Power Automate によって自動的に識別されます。

手順の概要

Power Automate を使い慣れている場合は、以下の簡単な手順を使用してデータ ソースから別の場所にデータをコピーできます。

  1. 監視するソースと、変更されたデータのコピー先を特定します。 そのソースとターゲットの両方にアクセスできることを確認します。

  2. ソース内およびターゲット内で項目を一意に識別する 1 つ以上の列を特定します。 次の例ではタイトル列を使用しますが、どの列を使用してもかまいません。

  3. ソースの変更を監視するトリガーを設定します。

  4. ターゲットを検索して、変更された項目が存在するかどうかを確認します。

  5. 次のような条件を使用します。

    • 新規または変更された項目がターゲットに存在しない場合は、作成します。

    • 新規または変更された項目がターゲットに存在する場合は、更新します。

  6. フローをトリガーしてから、新規または変更された項目がソースからターゲットにコピーされていることを確認します。

以前に SharePoint または SQL Database への接続を作成していない場合、サインインを求められたら、表示される指示に従います。

フローの作成手順を以下に詳しく説明します。

ソースの変更を監視する

まず、Copilot はフローの構造の構築に役立ちます。

  1. Power Automate を起動し、組織のアカウントを使用してサインインします。

  2. ホーム ページの中央に次のように入力します: SharePoint で項目が作成または変更される際に SQL アクションを追加します。条件を追加し、項目が存在する場合は SQL で項目を更新し、それ以外の場合は SQL で新しい項目を作成します。次に、生成をクリックします。

    Power Automate ホーム ページと Copilot の説明を入力するスクリーンショット。

  3. Copilot は、説明に基づいてアクションを含むフローの構築に努め、生成されたアクションをレビューする機会を提供します。 この例では、以下が表示されます。

    1. プロンプトを入力した説明ボックス。 こちらでフロー内のアクションを引き続き調整できます。

    2. Copilot は、項目が作成された、またはトリガーが変更されるとき (SharePoint) を追加しました。

    3. Copilot は、条件の True 分岐に複数行の選択 (SQL) アクション、条件行の更新 (SQL) アクションを追加し、条件の False 分岐に行の挿入 (SQL) アクションを追加しました。

    4. 次へボタンをクリックすると、フロー デザイナーが表示されます。

    生成されたオートメーション Copilot を確認するスクリーンショット。

  4. フローに問題がなければ、次へを選択してアクションを構成します。

  5. 以前に SQL データベースまたは SharePoint への接続を作成していない場合、Copilot は接続を作成するように指示します。 それ以外の場合は、各接続の横に緑色のチェック マークが表示されます。

    このフローに対する接続済みサービスを表示する Copilot のスクリーンショット。

  6. 接続が確立されたら、フローの作成を選択します。

  7. 項目が作成または変更されたときトリガーを選択して、左側のアクション プロパティ パネルを開きます。

    トリガーおよびそのパラメーターのスクリーンショット。

  8. サイト アドレスを入力してから、新規または更新された項目をフローで監視する Microsoft Lists のリストの名前を選択します。

    サイト アドレスを SharePoint チームのアドレスに設定し、リスト名を「顧客リスト」に設定した状態で、項目を作成または変更するときのスクリーンショット。

既存の項目の宛先を検索する

次に、複数行の取得 (SQL) アクションを構成して、項目が SQL データベースにすでに存在するかどうかを確認します。

  1. 複数行を取得アクションを選択して、左側にアクションのプロパティ パネルを開きます。

  2. サーバー名データベース名、および監視する SQL テーブルのテーブル名を設定します。

    SQL 複数行を取得アクションのサーバー名、データベース名、テーブル名を設定するスクリーンショット。

  3. 詳細パラメーターを選択して、フィルター クエリを選択します。

    SQL 複数行の取得アクションの高度なフィルター クエリ パラメーターを設定するスクリーンショット。

  4. フィルター クエリ ボックスに、「CustomerID eq」と入力します。 次に、動的コンテンツ リストで CustomerID トークンを選択します。

    SQL 顧客 ID に対して詳細フィルター クエリ パラメーターを設定するスクリーンショット。

    この手順では、Microsoft Lists と SQL テーブルが CustomerID 列で一致すると想定しています。

新しい項目を作成するか、既存の項目を更新するかを確認します

次に、項目が存在するかどうかを確認する条件を構成します。 項目が存在する場合は項目を更新し、存在しない場合は新しい行を作成します。

  1. 条件を選択して、左側にアクションのプロパティ パネルを開きます。 式の挿入を選択します。

    [式の挿入] ボタンのスクリーンショット。

  2. Length を検索し、length(collection) を選択します。

    「式」タブに「動的コンテンツ」が表示され、length(collection) が強調表示されている、条件のスクリーンショット。

  3. [式] ペインを開いたまま、動的コンテンツタブを選択します。

  4. 複数行を選択 カテゴリで、body/value を選択し、追加を選択します。

    SQL 複数行の取得の本体値が強調表示された条件のスクリーンショット。

    ヒント

    複数行を取得カテゴリからが選択されていることを確認します。 項目が作成または変更されたときカテゴリからはを選択しないでください。

  5. 中央のフィールドから次の値に等しいを選択します。

  6. 右側のフィールドに 1 (1) を入力します。

    これで条件カードはこの画像のようになるはずです。

    0 に等しい Length が強調表示されている、条件のスクリーンショット。

    ヒント

    length() 関数を追加することで、一覧をフローで確認できるようになります。 Length が一覧の中の項目の数を返します。 値一覧に項目が 1 つある場合、その項目が SQL に存在し、更新する必要があることがわかります。

フローがターゲットから項目を取得するとき、結果として 2 つが考えられます。

結果 次の手順
項目が存在します。 項目を更新します。
項目が存在しません。 新しい項目を作成します。

ターゲットで項目を作成する

この条件により、Microsoft Lists の項目が SQL の接続先に存在するかどうかが確認されます。 ただし、条件の確認後に何を行うかを Power Automate に指示する必要があります。 Microsoft Lists の項目が SQL に存在しない場合は、新しい行を作成するか、既存の項目を更新します。

  1. 条件の False 側で 行の挿入 (SQL) アクションを選択して、左側でアクションの [プロパティ] パネルを開きます。

  2. 行の挿入カードで、サーバー名データベース名、および新しいアイテムを挿入するテーブルのテーブル名 (先ほど入力した情報と同じ) を設定します。

    行の挿入 SQL アクションと関連するプロパティを選択するスクリーンショット。

    行の挿入カードが展開され、テーブルのすべてのフィールドが表示されます。 アスタリスク (*) が付いているフィールドは必須であり、入力しないと行が有効になりません。

  3. 入力する各フィールドを選択し、データを入力します。

    手動でデータを入力したり、[動的コンテンツ] ペインで 1 つまたは複数のトークンを選択したり、テキストとトークンの組み合わせをフィールドに入力したりできます。

行の挿入および行の更新カードに、フローで使用されている SQL Database テーブルの列名が表示されます。 そのため、この手順の画像に表示されているカードは実際と異なる場合があります。

ターゲットで項目を更新する

次に、SQL 項目を更新するアクションを構成します。

  1. 条件の True 側で 行の更新 (SQL) アクションを選択して、左側でアクションの [プロパティ] パネルを開きます。

    行の更新 SQL アクションの選択およびプロパティの設定のスクリーンショット。

  2. サーバー名データベース名テーブル名を設定します。

  3. 行 ID フィールドに対して、SQL データベースから主キーを取得する必要があります。 この例では、複数行の取得 (SQL) アクションの出力からの CustomerID フィールドです。

    通常、複数行の取得アクションを使用し、後続のアクションで出力のプロパティにアクセスする場合、Power Automate では自動的に For Each ループが作成され、一覧内の各項目を処理します。 ただし、この特定のケースでは、CustomerID が SQL テーブルの主キーであるため、CustomerID が見つかった場合は Power Automate 常に 1 つのレコードを返すことがわかります。 これは、次の式を使用して一覧の最初の項目の CustomerID プロパティにアクセスできることを意味します。

    outputs('Get_Rows')?['body/value'][0]?['customerid']

  4. Row Id パラメーターを選択してから、/ と入力して、[式の挿入] を選択します。 数式バーに上記のコードを配置します。

  5. 詳細パラメーターを選択してから、更新するフィールドを選択します。

  6. フローを保存してテストします。

    SQL で更新アイテムを表示するスクリーンショット。

これで、一覧 (ソース) の項目が変更されるたびにフローがトリガーされます。 SQL Database (ターゲット) で新しい項目が挿入されるか、既存の項目が更新されます。

項目がコピー元から削除された場合、フローはトリガーされません。 このシナリオが重要な場合、項目が不要になったことを示す別個の列を追加することを検討してください。