OneDriveのモジュールとトリガーにファイルに変更があったら -> 何かする
を作ろうとし
てますがちょっとよくわからない挙動に当たったのでメモがてら記録しておきます。
Power Automate(クラウドフロー・DPA)での話です。 PADではないので悪しからず。
まずは通常の使い方から
動的コンテンツ(変数的なものだと思ってます。)のファイル名
にファイル名が入ってきますが、以下のように<ファイル名>が更新されたよ
などと入れておくと、例えばbook.xlsx
を変更した場合、book.xlsxが更新されたよ
の文字列が送られてきます。
<ファイル名>のみで扱うとバグる?
特定のファイル名だったら何か処理をする、を実装する場合、以下のようにすると思います。
例えばbook.xlsxが変更された場合
ただこれだとfalseに行ってしまい、中身を確認するとYm9vay54bHN4
といった文字列になっていました。
条件を<ファイル名>がYm9vay54bHN4
だったらに変更してみたら...
まさかのtrue。
ということでbook.xlsx
はYm9vay54bHN4
という文字列に変換されてました。
回避策 - ○○を噛ませてxxで囲む
調べても有効な手段がなかったのですが(PADの方がでてきてしまって、Power Automateのクラウドフローのググラビリティ悪さ... )
こんな形で 変数を作成 し、
文字列として追加する際に動的コンテンツのファイル名をダブルクオーテーションで囲みます。
見出しに書いた○○は変数で、xxは""ですね。変数を噛ませて""で囲む
ことで回避できます。
条件式では作った変数を利用します。
すると なぜか分からんけど回避できます。
JavaScriptでx=1はNumberだけど${x}
にすると文字列に変換されるような挙動だったり、エクセルで001を入れると1という表示になってしまうけど'001
と入れると文字列で001
になったりしますがその辺をイメージしてみたらうまくいきました。
成功するとこんな感じ
謎文字列ではなくちゃんとブック.xlsx
という文字が変数に格納されていて、
条件はtrueに入ってました。
試した際のこの式の場合ブック.xlsx
をいじるとtrue、他ファイルをいじるとfalseに分岐します。
まとめ
仕様がわからなくてつらみがある。回避したあとに以下の記事を見つけたけどx-ms-file-name-encoded
というエンコード方式があるっぽいですね。。うーむ。。