- 記事一覧 >
- ブログ記事
Power Appsキャンバスアプリ 最初から知っていたら嬉しかった15のこと
はじめに
人柱的に社内で誰もやったことがない Power Apps のキャンバスアプリ開発をしていて、「あれ?なんで?うーん...あっ!そうか!」ってなったことが何回かありました。
そうなったとき、思ったのが、「事前に先輩とかに教えてもらっていて、知っていたら、嬉しかったなぁ。」です。
そう思った事柄について、15個手短に列挙していきます。
今回取り上げた事柄は、完全に主観的かつ独断で選抜しています。あるあるランキングでもなんでもないです。単に初心者向けと高を括って勉強不足のまま始めたという側面もあります。
2023 年 4 月現在の Power Apps の話です。状況が異なる可能性があります。
全て Windows の Chrome 前提です。
Power Apps Studio
Studio?そういうデスクトップアプリがあるかと思いました。
昔は、そういうデスクトップアプリがあったようです。
Power Apps のアプリ作成環境を「Power Apps Studio」と呼んでいます。
アプリの「編集」の画面のことです。
これのことです。
↓
参考 URL:https://learn.microsoft.com/ja-jp/power-apps/maker/canvas-apps/power-apps-studio
いろいろグローバル
グローバル変数: Set(グローバル変数,1)
ローカル変数: UpdateContext({ローカル変数: 1})
グローバル変数: 全画面に使える
ローカル変数: 作った画面内のみで使える(ただし、遷移先の画面へ渡すことはできます。)
なのですが、
個々の部品もグローバルです。
例えば、Label1.Text
もグローバルです。つまり、どの画面からでも部品を参照できます。
コレクション(Collection)もグローバルです。
例えば、App の OnStart にClearCollect(col_Innu,[{ID: 1, Namae: "ポチ"},{ID: 2, Namae: "むぎ"}]);
と書くと、col_Innu
は、最初からどこでも使えるコレクションになります。
余談ですが、以下のように App の OnStart に enum(列挙型) を定義するつもりで、グローバル変数を使う手もあります。
Set(VehicleType,
{Car:1, Bus:2, Train:3}
)
その他、あっちこっちで使われていて、後から変わると痛い定型文を App の OnStart にグローバル変数として書いておくと良いと思います。
変数の内容が見られる
コレクションと変数の内容は、・・・ のところをクリックすると、見られます。
現在の値が表示されています。例えば、ボタンを押したら、
1
になる変数があるとして、1
になったかどうかを確認しようとした場合、アプリをプレビュー再生するか、Alt キーを押しながら、一度ボタンを押しておく必要があります。
入力内容が反映されないことがある
再現が難しいのですが、Visible に false
と書いたのに、エラーが解消しない現象があり、(見た目は、false
が入っている。)戻る → 編集で、fa
になっていたことがありました。
その他、ギャラリーのデータが突然表示されなくなって、データソースをいじったせいかな?と思って、いろいろやっても一向に表示されず、ギャラリーの Visible がなぜか 0
になっていたということがありました。0
は、false
として扱われて、エラーになりません。
ギャラリーの事例は、入力内容が反映されないことがあるのとは関係無いかもしれないです。ですが、あり得ると思って各パラーメータが変になっていないか確認対象として認識しておいた方が良いと思いました。
他、ツリービュー の 画面 - 検索 に「ギャラリー」と入力したかったのにうまく入力できないことがありました。
自動保存
能動的に保存するときは、保存ボタンを押して保存しますが、2分毎に定期的に保存されます。
自動保存を止めたいときは、 設定 → 全般 に移動して、自動保存 をオフにする必要があります。
オフにしたブラウザとは異なるブラウザで開くと、オンになっています。「これはブラウザー レベルの設定です。」の記述は、そういうことのようです。
エクスポート前に公開が必要
保存 → 戻る → エクスポートパッケージ では、保存 のときの状況でエクスポートされません。
これでバックアップを取ったつもりでいると、危険です。
公開 が必要です。
公開 → このバージョンの公開 → ・・・ → アプリのバージョン履歴 を見ると、バージョンが一つ上がって、"ライブ" と表記されています。"ライブ" の状態のものがエクスポートされます。
詳細 → 復元 にて、VMware で言うスナップショットみたいに、各公開したタイミングに戻すこともできます。
エクスポート → 更新 → 新規 → どちらも同じ
エクスポートパッケージ は、最初、インポートの設定が「更新」になっています。
これを エクスポート → 「新しく作成する」の方でも取っておこうと思って、「変更」でエクスポート直後、新しく作成する に変更して、 保存 → ダウンロード としても、まったく同じファイルがダウンロードされます。
「更新」「新しく作成する」両方取得する場合、
エクスポートパッケージ → エクスポート → アプリ一覧にいったん戻る → エクスポートパッケージ → 新しく作成する に変更して、 保存 → エクスポート
の操作が必要です。
ちなみに、「更新」で取得してもインポート時に、「新しく作成する」に変更できるようです。「更新」「新しく作成する」は、単にインポートの初期状態のようです。
もしかしたら、規模が大きくなるとエクスポート時の選択が重要な意味を持つかもしれません。
編集中に落ちることがある
スクリーンショットを取り損ねましたが、アプリ編集作業中に「申し訳ございません。」云々のメッセージが突然表示されて、アプリ一覧に戻りました。
おそらく、前回保存した時ではなく、前回公開したときに戻りました。2時間くらい失いました。(自動保存は、オンにしていました。)
公開をこまめに行うか、上述のエクスポートを定期的にやっておいた方が良いです。
Undo で元に戻らないことがある
Undo とは、CTRL+Z もしくは、「元に戻す」のことです。
この動作が完ぺきではなく、部品を移動させたり、削除したりしたときに元に戻らないことがあります。
参考 URL:https://ideas.powerapps.com/d365community/idea/560dd75f-1078-ed11-a81c-6045bd7bdac2
複数選択 → プロパティ変更
CTRL キーを押しながら複数部品選択 → プロパティ変更 を行うと、まとめて変更できます。
1個1個ちまちま選択 → 変更 → 選択 → 変更とやらなくてもいいです。
まとめて Visible をいじるケースでは、グループ化して、グループの Visible をいじった方が良いです。
Select()
OnSelect で他の部品と全く同じ動作をする部品があるとき、Select(同じ動作内容のOnSelectが書かれた部品)
と書けば良いです。
同じことをコピペして書く必要はありません。
前面 背面 移動ショートカットキー
ツリー ビュー の上の方に表示されている方が 前面 です。
この位置関係を変える時、・・・ → 再配列 → 背面へ移動 などとして、変えられます。
しかし、部品数が増えてきて、10 個背面に移動したくなると、これを 10 回ポチポチしないといけません。
前面へ移動:CTRL + ]
背面へ移動:CTRL + [
のショートカットキーで移動できます。
キーボードの配列では、
[
は、]
よりも上にあるのですが、[
は、下へ(背面へ)、]
は、上へ(前面へ)移動します。(英語配列キーボードの場合は、左、右の関係です。)
水平/垂直コンテナの名前変更は危険
水平/垂直コンテナの名前変更を行うと、中央、右寄せなどに配置したものが初期化されてしまいました。
その他、ギャラリーが全てハーフサイズになる事例がありました。
名前変更には注意が必要そうです。
And, Or JS スタイル VB スタイル
And
、Or
、Not
は、JS スタイル VB スタイルでも表記できます。
関数の表記 | Visual Basic 演算子表記 | JavaScript 演算子表記 |
---|---|---|
And(x, y) | x And y | x && y |
Or(x, y) | x Or y | x | y |
Not(x) | Not x | !x |
文字列の中に式
文字列と式を連結する場合、&
を使います。
例:"犬データ:" & LookUp(col_Innu, ID=1).Namae & " " & グローバル変数*2 & "匹"
$"文字{式}文字"
の書き方で、&
の連結が不要になります。
例:$"犬データ:{LookUp(col_Innu, ID=1).Namae} {グローバル変数*2}匹"
その他、宣伝、誹謗中傷等、当方が不適切と判断した書き込みは、理由の如何を問わず、投稿者に断りなく削除します。
書き込み内容について、一切の責任を負いません。
このコメント機能は、予告無く廃止する可能性があります。ご了承ください。
コメントの削除をご依頼の場合はTwitterのDM等でご連絡ください。