![見出し画像](https://assets.st-note.com/production/uploads/images/93347569/rectangle_large_type_2_ce2491102fff0d657ef159e6a55d4e6d.png?width=800)
Power Automateの覚え書き
自分の覚えでメモしておきます。
■コネクタ
Outlook
Office 365 Outlook:社内のメールアドレス(365の中のメール)
Outlook.com:フリーのMicrosoftアカウントのメール
Office 365 Users:「上司の取得」で「ユーザーの電子メール」を指定することで、そのユーザーの承認者の情報が取得できる
Teams
※チームのメンバーは、Teamsコネクタでは取得できないので、Office 365 Groupsのコネクタを使う
メッセージを取得します
→ 取得できる投稿は直近20件のみチャネルのメッセージで自分がメンションされているとき
→ 返信ではトリガー実行されない自分が @mentioned である場合
→ 返信でもトリガー実行される
【Body PlainTextContent】がタグなしの本文チャットまたはチャネルでメッセージを投稿する
→ フローボットはタイトルを投稿できない
→ フローボットはプライベートチャネルに投稿できない
→ そのチャネルに参加しているユーザーなら、プライベートチャネルに投稿できるキーワードが言及された場合
→ 日本語では発火しない(わたるふさんの検証記事参照)
チームID:groupId
※「チャネルへのリンクを取得」からも取得可能チャネルID:「チャネルの一覧表示」アクションから取得できるid
※「チャネルへのリンクを取得」だと「:」と「@」がURLエンコードでコード変換されてしまうので注意メンション
→ <at>UPN(ユーザープリンシパル名)</at>
Office 365 Groups
グループメンバーの一覧表示
→ Teamsのチームのメンバー一覧が取得できる
SharePoint
複数の項目の取得
→ 項目が100件を超える場合は、3点リーダーの設定から「改ページ」をオンにして、しきい値を上げる新しいフォルダーの作成
→ すでにそのフォルダが存在してもエラーにはならない
OneDrive for Business
フォルダーにアーカイブを展開します
→ 展開後のファイルが0バイトのときは、展開されるがファイルが消えるため、エラーにはならないけど展開後のファイルが残らない
Excel Online
表内に存在する行を一覧表示
→ 256行しか取得できないフィルタークエリの書き方:送信フラグ eq '●' ←文字列は''で囲む
※等しいは「eq」、等しくないは「ne」行の取得
→ 日付列をキーにするときは、もにょもにょ必要
※以下、Miyakeさんからのアドバイス
![](https://assets.st-note.com/img/1673067587096-WhnntgMANA.png?width=800)
ちなみに 最後になぜ 2 を加算しているかというと、
![](https://assets.st-note.com/img/1673348361318-bsyZGvnKdh.png)
<参考サイト🙏✨>
Power Automate で Excel シリアル値を求める方法
【Power Automate】Excelの「行の取得」のキー値に日付を使う方法
■アダプティブカード
アダプティブカードデザイナーで作成する
画像のリンクは、https から始まるURLでないとエラーになる
複数テキストにする場合はMulti-lineにチェック
Input.Text
PlaceholderはMicrosoft的に非推奨なので削除
項目名をLabelに入力する
IDを付ける(日本語OK)
段組みにはColumnSet
Add a columnをクリックすると、段が増える
![](https://assets.st-note.com/img/1673867374421-cfXdfJaNBK.png)
ドロップダウンリストにはInput.ChoiceSet
![](https://assets.st-note.com/img/1673867827632-ouBmzd8QS7.png)
■nullかブランクか?
変数:変数を初期化する → 値を設定しないとブランク
Excel Online:表内に存在する行を一覧表示→ブランク
nullの記述は、Expressionに null を入力
ブランクの記述は、Expressionに '' を入力
■Apply to eachを並列処理する
そのままではひとつずつ繰り返し処理を行うので、時間がかかってしまう。
最大50件までなら並列処理することができ、処理速が度向上できる。
Apply to eachの3点リーダー→設定→コンカレンシー制御を「オン」→並列処理の次数を、件数に合わせて変更する。
![](https://assets.st-note.com/img/1675558454614-E3YpXzXECy.png)
■関数
今日の日付(UTCから算出する必要がある)
UTCを日本時間に変換
convertFromUtc(utcNow(),'Tokyo Standard Time','yyyy/MM/dd')
convertFromUtc(utcNow(),'Tokyo Standard Time','yyyyMMddHHmmss')
単純にUTCに9時間加算
addHours(utcNow(),9,'yyyy/MM/dd')
文字の分割
split関数で区切り文字ごとに切り出し、インデックスで指定
split( 元の文字列 ,'区切り文字')[0スタートのインデックス]
例)split(variables('ファイル名'),'_')[1]
→ 202405_まる_好物.xlsx から「まる」を取り出す
■現在地のGoogleマップのリンクを埋め込む
「手動でフローをトリガーします」で、スマホアプリでボタンを押したときの現在値(緯度・経度)が取得できているので、それを利用する。
</> でコードビューにして、
<a href="https://www.google.com/maps?q= 【緯度】,【経度】">地図</a>
とする。
※緯度・経度は数値なので動的な値として表示されないため、検索をする
■Twitterのリンクを埋め込む
</> でコードビューにして、
<a href="https://twitter.com/【ツイート作成者】/status/【ツイートID】">Twitter</a>
■承認
「結果」は、Approve か Reject で返って来る
「開始して承認を待機」のbodyのresponses
![](https://assets.st-note.com/img/1684405528239-nbBCmJ8mXK.png)
配列になってしまうので、「データ操作:作成」で
first(outputs('開始して承認を待機')?['body/responses'])
して、必要箇所で
outputs('作成')?['comments'] ←commentsの部分はresponses内の欲しいもの
すると、中身だけ取れる。
※displayNameを取りたいときは、
outputs('作成')?['responder/displayName']
にする
※JSON Pretty Linterを利用するときは、objectの部分をoutputs('アクション名')にする。
outputs('開始して承認を待機')?['body']?['responses']?[0]?['responder']?['displayName']
💣アクション名に「 2」とか付いてるときは注意!
outputs('作成_2')?['comments'] ← 2の前の半角スペースは _ で入力する
<参考サイト🙏✨>
first関数で不要なApply to eachを回避する - MoreBeerMorePower
■制限
実行の継続時間:最大30日(承認の保留中を含む)
フローの実行履歴の保存:28日間
■JSON Pretty Linterを使用して、JSONから欲しい値を取得する
JSONコワイナイヨー
(いつも参考にさせていただいているMiyakeさんのスライド)
「整形前」に解析したいJSONを(*゚▽゚)ノ□ペタッ
→下の「ビューアー」の「JSON」の右側にある「Path」をクリック
取得したい値のPathをクリック
![](https://assets.st-note.com/img/1675253235422-KJ6WyywUhA.png?width=800)
objectをoutputsに、ブラケットとブラケットの間に?を入れる
object['body'][2]['items'][0]['columns'][1]['items'][0]['text']
だったら、
outputs('アクション名')?['body']?[2]?['items']?[0]?['columns']?[1]?['items']?[0]?['text']
にする。
※アクション名の半角スペースは、代わりに _ を入力すること
この例だと、「🍑maru」が取得できる
■式の入力フォームを広げる(「実験的な機能」をONにする)
右上の設定アイコン→すべてのPower Automate設定を表示する→実験的な機能をONにする
■フローのエクスポート→インポート
フローの詳細画面から「エクスポート」
インポートの設定の「更新」は、インポートしたときに新規にするか上書きするかの選択クラウドフローか自分と共有の「インポート」→「パッケージのインポート(レガシ)
エクスポートしたZipファイルをアップロード
「インポート時に選択する」で自分を選択して「保存」
「×」になるけど、気にしなくてOK「更新」で、更新するフローを選択して「保存」
「インポート」
■「選択したメッセージの場合」のフローがTeamsで表示されないとき
メッセージの3点リーダー→その他の操作→新規アクションを作成→表示されるウィンドウを閉じる
で、次から3点リーダー押下で表示されるようになる。
![](https://assets.st-note.com/img/1691299544384-F3mu1o0sOW.png?width=800)
■付随してSharePointリスト
Titleの「必須」を解除
設定したいリストを開いた状態で、右上歯車「設定」
→「リストの設定」
→「列」の「Title」をクリック
→「この列への情報の入力を必須にする」を「いいえ」にする
→右下の「OK」
Lists側で準備してくれている内部列を表示する
右上「すべてのアイテム」
→「現在のビューの編集」
→表示したいものにチェックを入れて、右上か右下の「OK」
💣キャッシュの関係?で反映が遅いときがあるので、変更したら再読み込みするのが吉
内部列名の英語表記(よく使いそうなやつのみ)
ID:ID
登録日時:Created
登録者:Author
更新日時:Modified
更新者:Editor
本人が作成したレコードのみ表示できるようにする
設定したいリストを開いた状態で、右上歯車「設定」
→「リストの設定」
→「全般設定」の「詳細設定」
→「読み取りアクセス権」を「ユーザー本人が作成したアイテム」にする
→「作成/編集のアクセス権」を「ユーザー本人のアイテム」にする
→下の「OK」
リストの日時
初期値では日本時間になっていないので、必ず変更する。
サイトの設定→サイトの管理の地域の設定→日本時間にする
■付随してForms
フォームID
個人フォームはリストから選択可能。
グループフォームはカスタム項目の追加から、IDをコピペ
回答のExcelファイルの保存場所
事務員が少しの背伸びでできる効率化を目指す🌈✨ 自分の好きなものを、楽しく発信していきたいです! いただいたサポートは学習費にあてさせていただきます🥰