今回はASTERIA Warpを使って、電子錠Sesameから開閉履歴を取得し、毎月の入退室管理を作成してみました。
フローの流れ
・毎月実行設定で1日の深夜にフローを定期的に実行する
・セサミの履歴取得WebAPIから開閉履歴を取得した後、先月の各日付で最初と最後の開閉履歴のみをExcelファイルで出力する
フローの詳細説明(先頭から順番に解説します)
・RESTコンポーネント
セサミの履歴取得WebAPIを使用して開閉履歴を取得する
「基本」設定
コネクションを使用:いいえ
URL:https://app.candyhouse.co/api/sesame2/「sesamiのUUID」/history?page=0&lg=「取得したいログの件数」
HTTPメソッド:GET
「送信ヘッダー」設定
ヘッダー名:x-api-key データ型:String 値:「sesamiのAPIKEY」
下図では「lg=300」でログを300件取得する設定にしています。
・Mapper(1番目)
RESTコンポーネントからの出力ストリームをマッピング
UnixTimeToDateでtimeStampの値をDateTime型の日付データに変換
先月の1日、今月の1日の日付を作成し、フロー変数に代入
・Mapper(2番目)条件付き
取得した開閉履歴から先月分のデータだけを取得
先月分データの中からtype10と11履歴を除外する
条件式:($record.timeStamp>=$flow.先月の頭) && ($record.timeStamp <$flow.先月の月末)&&($record.type!=10)&&($record.type!=11)
・RecordGroup
各日付ごとにレコードをグループ分けし、グループごとにループで出力する
「基本」設定
モード:オンメモリ
フィールド名:日付Group化するため
ソート順:昇順
・RecordSort(右:退室に関する操作、左:入室に関する操作)
RecordSortで各日付のレコードをソートする
右側RecordSort:ソートキー
キー名:timeStamp ソート順:降順
左側RecordSort:ソートキー
キー名:timeStamp ソート順:昇順
・Mapper(3番目)条件付き(右:退室に関する操作、左:入室に関する操作)
条件付きレイヤーでhistoryTag(ユーザID)の値を確認し、RDBのSQLパラメーターに値を代入する
historyTag(ユーザーID)が空の場合、ユーザーIDに123を代入
条件付きレイヤー1:$record.historyTag!=""&&$stream.RecordNo=1
条件付きレイヤー2:$record.historyTag=""&&$stream.RecordNo=1
・RDBGet(右:退室に関する操作、左:入室に関する操作)
USERIDテーブルからSQLパラメーターに代入した値を元に、ユーザー名を取得する
SQL文:SELECT NAME FROM USERID WHERE ID = ?ID2? 右
SQL文:SELECT NAME FROM USERID WHERE ID = ?ID? 左
・Mapper(4番名)(右:退室に関する操作、左:入室に関する操作)
退室時間、ユーザー名、日付をマッピングする
入室時間、ユーザー名、日付をマッピングする
・RecordJoin
入力キーに日付を設定し、レコードをJoinして取得する
・Mapper(5番目)
日付データを元にフォルダ名、ファイル名を自動で作成するため、フロー変数に値を代入する
各日付の曜日を取得する
入室時間、名前1、退室時間、名前2、曜日をマッピングする
・LoopEnd
ループを終了し、複数回入力されるストリームをまとめて出力する
「基本」設定
ループ開始コンポーネント:RecordGroup
出力形態:ストリームをまとめる
・Mapper(6番目)
入室時間、名前1、退室時間、名前、曜日データをExcelOutputコンポーネントへマッピングする
・ExcelOutput
Excelビルダーを起動し、Excelテンプレートを読み込んでレコード追加し、登録を行う
追加したレコードにより、フィールド名が定義される
・FilePut
入退室管理Excelファイルを出力
「基本」設定
ファイルパス: ${flow.get("年")}年/${flow.get("当月")}月/${flow.get("当月")}月sesami入退室管理.xlsx
書き込み処理:新規
上書きを許可:はい
■実行結果
毎月1日の00時00分00秒に以下のファイルが作成される
例:2024年11月1日 00時00分00秒
2024年/2024-10月/2024-10月sesami入退室管理.xlsx