パパセンセイ365

Power Platformの技術系のお話を繰り広げます

Power Appsでゲームを作るといろんな知見が貯まるのでおすすめ

本記事は移転しました。

約3秒後にリダイレクトします。

リダイレクトしない場合はここをクリックしてください。

【Excel】データ量が多い場合の重複チェック、関数を使うならCOUNTIFよりFINDの方が速いという話

本記事は移転しました。

約3秒後にリダイレクトします。

リダイレクトしない場合はここをクリックしてください。

OneDriveにファイルが登録されたらPower AutomateでExcelに情報を書き込む

OneDriveに保存したファイルの情報を管理したい場合に有効です。また少し変えればExcelに書き込むのではなくメールに送信したりもできます。

トリガーは「ファイルが生成されたとき」を選ぶ

OneDriveのトリガーに「ファイルが生成されたとき」がありますのでこれを使います。 Power Automateで[+作成]-[自動フロー]で選択できます。

f:id:tomikiya:20200419100755p:plain

情報を取得したいフォルダを選択します。また、サブフォルダを含めたい場合は詳細オプションを開いて「サブフォルダーを含める」を「はい」にします。

折角なので以前OneDriveに保存したドローンの情報を取り込んでみます。

f:id:tomikiya:20200419101240p:plain

するとある程度のファイルの情報はアクションの中で選択できるようになります。これをExcelに書き込みます。

f:id:tomikiya:20200419102301p:plain

項目 説明 サンプル
ファイル コンテンツ ファイルそのもの。画像ファイルであれば画像。オブジェクトタイプに格納できる {"$content-type": "image/jpeg","$content": "/*************....."}
ファイル コンテンツの種類 種類情報の文字列 image/jpeg
ファイル パス リソースのアドレス /drives/*********/root:(パス)/(ファイル名)
ファイルのエンティティ タグ データ転送の節約に使いたいときのタグ。サーバにデータを再リクエストするときにこのタグもつけると「もう送ったよ」という情報だけが返ってくる。それをクライアント側が受けてキャッシュを参照することで転送量を節約する設計ができる。 "{----************},1"
ファイル名 ファイルの名前 *******.jpg
識別子 一意に識別できる文字列。 (一意の文字列)

【関連記事】 www.papasensei365.info

他に必要な情報があればアクションで作る

トリガーから取得できる情報以外で必要なものがあればアクションで作ります。 今回は「現在時刻」「画像のURL」も追加で記録したいと思います。

現在時刻は「タイムゾーンの変換」で日本時間にする

現在時刻はutcNowという関数で取得できます。ただUTC/協定世界時になりますので日本時間に変換が必要です。 変換のアクションがタイムゾーンの変換になります。 基準時間を「utcNow()」、変換元タイムゾーンを「(UTC)協定世界時」、変換先のタイムゾーンを「(UTC)+09:00」とします。

f:id:tomikiya:20200419115234p:plain

画像のURLを作る

ファイルの情報には画像のURLが含まれていませんので実際に保存された画像から仕様を探ります。 URLはOneDrive上で画像を選択してプレビューを表示した後、「オリジナルの表示」で確認できます。

f:id:tomikiya:20200419135021p:plain

そこを見るとURLの仕様が確認できます。 私の場合はこんなURLでした。

https://********.sharepoint.com/personal/*******************/Documents/(フォルダ名)/(ファイル名)

まずはこのURLのフォルダ名までを変数に代入しておきます。

アクションの中から「データの選択 作成」を追加してURLの文字列を保存します。アクションの名前も「URL」に変更しておきました。

f:id:tomikiya:20200419140056p:plain

ファイル名も一旦変数に保存します。ファイル名は「変数を初期化する」のアクションに入れます。

f:id:tomikiya:20200419140300p:plain

ファイル名を「変数を初期化する」アクションに入れる理由は以下の記事に詳細を書いています。簡単に言えば「文字化けを回避するため」です。

【関連記事】 www.papasensei365.info

記録するExcelを用意する。

クラウド上にExcelファイルを用意しておきます。現在、Power AutomateのExcel操作はテーブルに対するアクションがメインなので、見出しを作ったらテーブル化しておきます。

f:id:tomikiya:20200419143352p:plain

この見出しがPower Automateにそのまま表示されるはずです。

トピック:ホントはExcelをデータベースにしない方が良い

今回、データの記録先にExcelを使いましたが、本当は別のデータベースの方が良いです。SharePointでもよいですができればMySQLとかPostgreSQLのようなデータベースに記録した方が快適です。 Excelはファイルがロックしていてアクションを失敗したり、Power Appsのようなツールから参照しようとするときに失敗するケースがあります。 調査やモックを作るくらいの簡単に済ませたい時にだけ使いましょう。

Excelのアクションを追加する

「Excel Online 表に行を追加する」のアクションを追加してフィールドに項目を設定します。 画像のURLの部分だけはconcatを使って文字列結合をします。

// imageURL
concat(outputs('URL'),variables('fileName'))

f:id:tomikiya:20200419142923p:plain

以上で完成です。これでファイが生成されると記録が増えていきます。

f:id:tomikiya:20200419154629p:plain

全体の流れはこんな感じです。

f:id:tomikiya:20200419143919p:plain

もしpng画像の時だけフローを実行したいなら

指定の条件の時だけフローを流したい場合は、トリガーの設定で「トリガーの条件」を指定します。

f:id:tomikiya:20200419150817p:plain

f:id:tomikiya:20200419150934p:plain

条件の式は先頭に@をつけて記述します。これでpng画像の時だけフローが流れます。

@equals(triggerOutputs()['headers']['Content-Type'],'image/png')

詳しい説明は@h-nagaoさんが詳しく書いてくださっています。以下をご覧ください。

qiita.com

おまけ:画像を解析した結果も記録してみる

せっかくなので画像をCustom Visionで解析して結果もExcelに保存してみます。 Custom Visionの設定は別の記事にまとめてますのでそちらをご覧ください。

https://www.papasensei365.info/entry/2020/04/08/070000www.papasensei365.info

Excelに新しいシートを作って解析結果を記録するテーブルを追加します。

f:id:tomikiya:20200419152354p:plain

あとはCustom VisionのアクションとExcelのアクションを追加するだけです。 ただし、Custom VissionからのレスポンスはJSON形式で複数のレコードを持っているので、JSONを解析の上「Apply to each」アクションで1レコードずつ記録します。

f:id:tomikiya:20200419152722p:plain

JSONを解析するときに使うスキーマはこんな形です。

{
    "type": "array",
    "items": {
        "type": "object",
        "properties": {
            "probability": {
                "type": "number"
            },
            "tagId": {
                "type": "string"
            },
            "tagName": {
                "type": "string"
            }
        }
    }
}

うまく解析できました。

f:id:tomikiya:20200419153116p:plain

ということで

OneDriveに保存されたことをトリガーに記録をつけるフローを作成してみました。 アクションを少し変えればメールを送ったり更にファイルを生成したりできるようになりそうですね。

【Excel】3つ以上のリストを連動させる

本記事は移転しました。

約3秒後にリダイレクトします。

リダイレクトしない場合はここをクリックしてください。

ドローンで撮影した画像をOneDriveに転送する

本記事は移転しました。

約3秒後にリダイレクトします。

リダイレクトしない場合はここをクリックしてください。