1.はじめに
今回から実際にフローを作成してきます。
まずはフローを定期的に実行させるトリガーの設定を行います。その後、Microsoft Listsに設定したツイートの巡回リストを取得するまでを実装します。
2.フローの新規作成
フローを以下のように新規作成します。
2.1.インスタントクラウドフローの選択
Microsoft 365ポータル等からPower Automateを開き、「作成」メニューから「インスタントクラウドフロー」を選択します。
2.2.スキップを選択
下記の画面で「スキップ」をクリックして作成画面に遷移します。
2.3.フロー名の設定
また、忘れないうちに、フロー名を設定しておきます。
左上の「無題」と表示されている箇所をクリックして、フロー名(例えば、「XのツイートをTeamsに投稿」)を設定しておきます。
3.トリガーの設定
「繰り返し(Recurrence)」トリガーを作成します。
3.1.トリガーの追加
フロー作成後、「トリガーの追加」をクリックします。
3.2.トリガーの選択
「Schedule」の「繰り返し」を選択します。
(ランタイムとして「組み込み」選択しておくと探しやすくなります。「7.補足」の「▼アクション追加時の絞り込み」も参考にしてください。)
3.3.トリガーの設定
(1)トリガーの名前を「繰り返し」に変更します。
(2)「▼パラメーター」の表に従って、「パラメーター」タブから以下の赤枠のように設定します。
▼パラメーター
名前 | 設定する値 |
---|---|
Interval | 24 |
Frequency | 時間 |
Time Zone | (UTC +09:00)大阪、札幌、東京 |
Start Time | 設定しない |
※この設定はフローを実行する頻度です。上記の設定は24時間に1度フローが実行されます。 一通りフローが完成したら、IntervalとFrequencyは必要に応じて調整してください。1時間以上~7日までを推奨します。
4.リスト情報
Microsoft Listsへのアクセス情報を変数として設定します。
4.1.アクションの追加
「繰り返し」トリガーの下の+をクリックして、「アクションの追加」を選択します。
4.2.アクションの選択
「Variable」の中から「変数を初期化する」を選択します。
4.3.アクションの設定
(1)アクションの名前を「リスト情報」に変更します。
(2)「▼パラメーター」の表に従って、「パラメーター」タブから以下の赤枠のように設定します。
▼パラメーター
名前 | 設定する値 |
---|---|
Name | varLists |
Type | Object |
Value | ※下記参照 |
Valueは、以下のようにJSON形式で設定します。
{
"sharepointUrl": "リスト保存先のSharePointサイトのURLを設定",
"listsId": "リストIDを設定"
}
(a) リスト保存先のSharePointサイトのURLの設定
「(3) 巡回用リストの作成」の記事で作成したリストを開き、上部の歯車アイコンをクリックします。
メニューの中から、「リストの設定」を選択します。
表示された設定画面で、以下のように、Webアドレスの「https://」で始まり「/Lists」の前まで(赤下線部分)を"sharepointUrl"の値として設定します。
(b)リストIDを設定
"sharepointUrl"の値を確認した画面を表示したままで、Webブラウザのアドレス欄を確認します。
「Lists=%7B」から「%7D」に囲まれた部分(赤下線部)を"listsId"の値として設定します。
(「%7B」や「%7D」は含めません。)
5.リストから巡回情報を取得
Listsに登録されている巡回情報を取得します。
5.1.アクションの追加
先ほど作成した「リスト情報」アクションの下の+をクリックして、「アクションの追加」を選択します。
5.2.アクションの選択
「SharePoint」の中から「複数の項目の追加」を選択します。
(ランタイムの種類は「標準」です。)
「さらに表示」をクリックして、すべてのアクションを表示して、一覧の中から選択します。
5.3.パラメーター設定
(1)アクションの名前を「リストから巡回情報を取得」に変更します。
(2)「▼パラメーター」の表に従って、「パラメーター」タブから以下の赤枠のように設定します。
▼パラメーター
名前 | 設定する値 |
---|---|
サイトのアドレス ※1 | @variables('varLists')?['sharepointUrl'] |
リスト名 ※1 | @variables('varLists')?['listsId'] |
詳細パラメーター ※2 | フィルタークエリ |
フィルタークエリ ※3 | is_enabled eq 1 |
※1 「サイトのアドレス」と「リスト名」は、どちらも「カスタム値の入力」を選択して、式を入力します。
「サイトのアドレス」と「リスト名」は、表中の「設定する値」をコピー&ペーストで入力します。
※2「詳細パラメーター」欄でプルダウンから「フィルター クエリを選択」します。
※3 表示された「フィルタークエリ」欄に「is_enabled eq 1」と入力します。
式の挿入(fxボタン)ではなく直接入力します。
▼SharePointへの接続
初めてSharePointのアクションを追加したとき、あるいは接続が無効な場合には、以下のようにサインインを行って、接続を行っておきます。
6.動作確認
フローを保存して、実際にリストから巡回情報を取得できるかどうか確認します。
6.1.フローの保存
画面上部の「保存」をクリックして、フローの作成状態を保存します。
※作成したフローが不意に消えてしまわないよう、フローに変更を加える度に、この「保存」を実施しておくことをお勧めします。
6.2.テストの実行
画面上部の「テスト」をクリックします。
フローのテスト画面で、「手動」を選択して「テスト」をクリックします。
フローの実行画面で、「フローの実行」をクリックします。
「フローの実行が正常に開始されました。」と表示されたら、「完了」をクリックします。
6.3.テスト結果の確認
上部に「ご利用のフローが正常に実行されました。」と表示され、すべてのアクションに緑色のチェックが表示されていることを確認します。
「リストから巡回情報を取得」のアクションをクリックすると、実際にこのアクションを実行したときの詳細情報を確認できます。
「出力」欄の「body」欄を見ると、取得したリストのデータが記載されていることが分かります。
7.補足
今回作成した手順について、補足・解説します。
▼アクション追加時の絞り込み
PowerAutomateのコネクタは非常に多いため、アクションを探すときに目的のものが分かり難い、あるいは検索しても表示されないときがありませんか?
SharePointとTeams関連以外は、ランタイムとして「組み込み」を選択すると一覧から探しやすくなります。
▼「Microsoft Listsのリスト情報の設定」でJSON型の変数を使用した理由
「sharepointUrl」と「ListsID」は、それぞれ個別にString型で変数を用意した方が理解しやすいですが、変数が多くなってしまいます。
JSON型に慣れる必要がありますが、用途別などのグループでまとめておくと設定変更時にわかりやすくなります。
▼「5.3.パラメーター設定」の値
「5.3.パラメーター設定」で、サイトのURLとして「@variables('varLists')?['sharepointUrl']」を入力していますが、先頭に@を付与した値は式(関数)として評価されます。
そのため、以下のように「式の挿入」で入力しても同じことができます。
赤枠のfxボタンをクリックして式を挿入します。
以下のように「関数」となっていることを確認して「variables('varLists')?['sharepointUrl']」を入力します。
注意:
ダイアログの下にある「追加」もしくは「更新」ボタンを押さないと反映されません。
@variables('varLists')?['sharepointUrl']を直接入力しても、上記のように式の挿入を行っても以下の表に表示されます。
ただ、式の挿入を行うと、手順が増えて設定ミスが発生する場合があります。
そのため本記事では、基本的には直接入力するパターンで説明しています。
▼フィルタークエリーによるフローの最適化
Microsoft Listsのリスト情報に有効化フラグ(is_enabled)を用意しました。これをオンオフすることでその巡回リストを利用するかどうかを選択できます。
その判定は、Power Automateのフロー側の配列フィルターアクションを利用することもできますが、本記事では「複数の項目の取得」のアクションのフィルタークエリーで判定することにしています。
試しに有効化フラグの値をいいえに変更して、フローを実行してみます。
そうすると、下図のように、該当しないデータはフロー側に送られてこないので、処理されるデータの削減とフローの判定処理を省略することができます。
※実は、当初はフィルタークエリーを使っていなかったのですが、フローチェッカーの指摘で気づきました。さすがです・・・
▼フィルタークエリーの演算子
本記事では「eq」(等しい)のみ使用していますが、その他の演算子は、以下のURLの「SharePoint REST サービスでサポートされる OData クエリ演算子」を参考にしてください。
ちなみに、bool型の場合には「~ eq true」のように比較したくなりますが、「~ eq 1」が正解ですね。
▼列の内部名
Listsでは、表示している列名とは別に、システム内部で使用する列名を持っているので注意が必要です。
列名を後から変更すると、表示と内部の列名が異なります。
以下のようなエラーが発生した場合には、そのようになっている可能性があります。手間でなければ、その列名を一度削除して作り直すのがよいです。
{ "status": 400, "message": "列 'is_enabled' が存在しません。他のユーザーが削除した可能性があります。\r\nclientRequestId:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx\r\nserviceRequestId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"}
また、日本語の表示名を使用すると、内部の列名はエンコードされた文字列になります。ですので、エンコードされると分かり難いので、英語の列名にしています。
▼「5.リストからの巡回情報の取得」でエラーが発生した場合
「4.Microsoft Listsのリスト情報の設定」で設定したパラメーター値をチェックします。
「sharepointUrl」の値を間違った場合、その内容によってエラーメッセージが変わります。 下記は、一部を間違った場合の例ですが、出力欄の「body」には、"404 FILE NOT FOUND"というエラーが含まれています。
よくわからないエラーとなった場合には、「sharepointUrl」の間違いと考えてよいでしょう。
一方で、「listsId」を間違った場合には、以下のようにそのものずばりの「List not found」が返ってきます。
「sharepointUrl」が間違っていなければ、SharePoint/OneDriveのサーバーに接続できているので、それがエラーを返してくれます。
8.おわりに
今回は、SharePointへの接続までのフローを作成しました。
次回は、ここで取得した巡回情報を元にX APIに接続するフローを作成します。
Comments