【PA】Teamsアダプティブカードで勤怠フォーム作成
定時にアダプティブカードを投稿して、
在宅勤務の勤怠登録フォームをつくった。
2024/12/03
だいたい出来たが、フォーム送信後の動的なアクションが表示されない。
原因?
現在の時刻を取得→JSONで動的アクションを使用したことが理由かも
参考🔻
https://blog.jbs.co.jp/entry/2024/06/24/145509
明日、JSONから動的アクションを消してみる
ー追記ー
動的アクション消したら実装できた。
けど、アダプティブは一回しか反応できないので、複数人いるチャネルでは誰かが反応したら、その後の反応が無効になる。
今回は勤怠入力のアダプティブカードを作りたかったが断念。
PowerAppsで作れるが、そこまでするべきなのか謎。多分作らない、、、、、
終わり
PAフロー備忘録:Team_最新の親スレッドIDを取得
Teamsチャットで最新の親スレッドへ返信をするフローをつくった際の備忘録
■アクション名:メッセージを取得
チーム:(プルダウンから選択)
チャネル:(プルダウンから選択)
出力結果は以下。マーカー部分を取得したい。
(最新スレッドが1番上)
■アクション名:変数を初期化する
Name:メッセージID
Type:Arry
■アクション名:配列変数に追加
Name:メッセージID
Value:item()?['id']
※Select an output from previous steps
outputs('メッセージを取得します')?['body/value']
■アクション名:作成
replace(variables('メッセージID')[0],'"','')
以下は式の説明。
>
最新のスレッドは要素数0(最初)になるので
variables('メッセージID')[0]
と記載。
>
メッセージIDは「"111111"」と出力されるので
replace関数で「"」を「(なし)」に置き換えている
PAでAPIを叩いてレポートを取得する
PowerAutomateで MyJVN API を叩いてレポートを取得
概要 :本日公開されたレポートがある場合、毎朝h時Teamsに内容を投稿する
実行時間:完了まで3秒
✅2024/11/11修正
■アクション名:タイムゾーンの変換
【変更前】Time unit:yyyy年M月dd日
【変更後】Time unit:yyyy年M月d日
≪フロー概要≫
■毎朝h時に実行するトリガーを設定
■アクション名:HTTPを要求
APIを叩くと最大50件(retMax)までしか出力できないので、出力数を最新20件に絞る工程が必要となる
最新20件のエントリ開始位置を取得するには総数-19をすれば良い。
レポートを全件取得して総件数を調査 …応答値の「totalRes=総数」で得ることができる
URI https://jvndb.jvn.jp/myjvn?method=getAlertList&feed=hnd&method=getAlertList&ft=json
Method GET
■アクション名:JSONの解析
Content:body('HTTPを要求_総数を取得')
Schema:
■アクション名:作成
int整数の関数で文字列バージョンを実際の整数値に変換する必要がある
入力:int(body('JSON_の解析')?['feed']?['status:Status']?['totalRes'])
■アクション名:変数を初期化
Name:総数
Type:Integer
Value:outputs('作成')
■アクション名:総数を減らす
レポート総件数から-19した数値を取得して、エントリ開始位置に設定する。例)総数87-19=68を
Name:総数
Value:19
■アクション名:HTTPを要求
エントリ開始位置(startItem)~最大件数を出力して最新20件を取得
※maxCountItem(最大件数)を設定するとエラーになるので未設定でOK
URI https://jvndb.jvn.jp/myjvn?method=getAlertList&feed=hnd&method=getAlertList&ft=json&startItem=<総数>
Method GET
■アクション名:JSONの解析
Content:body('HTTPを要求_最新20件を取得')
Schemaは最初のJSONの解析と同じ
■アクション名:タイムゾーンの変換
本日の日付をyyyy年mm月dd日の型に変更する
Base time: utcNow()
Source time zone:(UTC) Coordinated Universal Time
Destination time zone:(UTC+09:00) Osaka, Sapporo, Tokyo
Time unit:yyyy年M月d日
■アクション名:時間からの減算
Base time:body('今日の日付をyyyy年mm月dd日に変換')
Interval:1
Time unit:Day
■アクション名:タイムゾーンの変換
減算したあとの日付(昨日の日付)をyyyy年m月d日に変換する
Base time:body('時間からの減算')
Source time zone:(UTC) Coordinated Universal Time
Destination time zone:(UTC+09:00) Osaka, Sapporo, Tokyo
Time unit:yyyy年M月d日
■アクション名:作成
以下2種類作成
・入力:body('今日の日付をyyyy年m月d日に変換')
・入力:body('昨日の日付をyyyy年m月d日に変換')
■アクション名:JSONフィルター処理
以下2種類作成して、昨日と今日の日付でそれぞれフィルタする
>
From:body('JSON_の解析-2')?['feed']?['entry']
Filter Query:item()?['title']
以下を右枠へ順に記載or選択
contains
outputs('今日の日付')or
>
From:body('JSON_の解析-2')?['feed']?['entry']
Filter Query:item()?['title']
以下を右枠へ順に記載or選択
contains
outputs('昨日の日付')
■アクション名:変数の初期化
空の変数を用意する
Name:3項目
Type:Arry
■アクション名:配列変数に追加
変数3項目にフィルター結果を追加する
以下2種類作成して、昨日と今日の日付のフィルタ結果を追加する
HTMLタグも一緒に追加する
>
Select an output from previous steps:outputs('タイトルでフィルター処理1')['body']
Name:3項目
Value :
items('For_each')['title']
レベル:items('For_each')?['category']?['label'](リンク)
>
Select an output from previous steps:outputs('タイトルでフィルター処理2')['body']
Name:3項目
Value :
items('For_each_2')['title']
レベル:items('For_each_2')?['category']?['label'](リンク)
■アクション名:作成
本日のレポート結果があるかIf関数で判定
この判定結果は後の条件分岐の際に使用する
入力:if(Empty(variables('3項目')),'空白でした','空白ではありません')
■アクション名:作成
配列を文字列にする
入力:string(variables('3項目'))
■アクション名:作成
配列に含まれる記号「[ ]」、「,」を置換して消す
replace(replace(replace(replace(outputs('配列変数3項目を文字列に変換'),'[',''),'"',''),',',''),']','')
■アクション名:条件分岐アクション
左から以下を入力or選択
outputs('本日のレポート結果を確認')
is equal to
空白ではありません
True :Teamsへ投稿
False:フロー終了(「Status」は「Succeeded」に設定 = Falesの場合"フロー成功"とする。)
≪フロー完了≫
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
参考にしたページ
・JSON2階層目以降のアクセス方法:Power Automate で JSON 内の値を取得する方法 | 株式会社イルミネート・ジャパン (illuminate-j.jp)
https://www.illuminate-j.jp/blog/automate-jsonhint
・配列作成:【Power Automate】JSONから配列を作り、配列内の数値を合計する #PowerAutomate - Qiita
https://qiita.com/DaddyDaddy/items/a2d2c9b03d3ad3ca5b3e
・PA関数:
・【PowerAutomate】空白・Nullを判定する方法【4選】。変数・配列を空にする方法も! | ネットワークエンジニアになった人 (mizusibuki.com)
https://mizusibuki.com/pa-how-to-determine-null/#toc8
・【PowerAutomate】複数の文字を同時に置換する。replaceをループで処理して式を見やすくする方法も。 | ネットワークエンジニアになった人 (mizusibuki.com)
https://mizusibuki.com/pa-multiple-replace/#:~:text=%E5%BC%8F%E3%81%AE%E4%B8%AD%E3%81%AB%E8%87%AA%E5%88%86
・HTMLタグ/HTML要素一覧 - TAG index
https://www.tagindex.com/html_tag/elements/#:~:text=%3Cdiv%3E
map関数について
📝少し理解が浅いのでまとめていく
理解が深まった動画🎥
- YouTube
・map関数は配列のみに使用できる
・オブジェクトには使用できない
・foreachとも違う(動画)
dataTable.addRows: dataTableに新しい行を追加するメソッド。
- 1: この引数は、新しい行をテーブルの最後に追加することを示す。
Space.map(i => [...]): Spaceという配列に対してmapメソッドを使用し、各要素iを新しい配列に変換している。
i.id, i.projectKey, i.name: 各要素のid、projectKey、nameを取得し、それらを新しい配列として格納しています。
結果として、Space内の各要素に基づいて、id、projectKey、nameの3つのカラムを持つ行がdataTableに追加。
dataTable_2.addRows: dataTable_2に新しい行を追加するメソッド。
- 1: 新しい行をテーブルの最後に追加することを示す。
配列: 新しい行として追加するデータは、特定の項目を1048576で割った値の配列。
各値(Space.issue, Space.wikiなど)は、ストレージやリソースの量。
1048576で割ることで、値がメガバイト単位に変換。
この結果、dataTable_2には、メガバイト単位に変換されたリソースの使用量が1行追加。
【Outlook VBA】連絡先をExcelに抽出
初回に、Outlookで以下の設定を実施しないとマクロが起動しません
①開発タブを表示させる
②ツール > 参照設定 > 一覧から「Microsoft Excel XX.X Object Library」を探してチェック
【下準備】
Cドライブ上のフォルダに転記用のExcelファイルを格納しておく
◼️その他OutlookVBAについて
https://extan.jp/?p=421#%E3%82%82%E3%81%97%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%AA%E3%81%8B%E3%81%A3%E3%81%9F%E3%82%89
◼️参考ページ
https://www.teijitaisya.com/outlookvba-getuserinfofromex/
【officescript】Backlog 続編②
◼️プロジェクト情報の抽出
📝メモ
レスポンスが数値のみだったので何故?文字コード表記?と思ってたけど
結局B(バイト)表記になっていただけだった。
バイト→メガバイトにしたいので計算して転記する。
(1048576B=1MB)
四捨五入はExcelシート上の書式で設定。