1. 記事一覧 >
  2. ブログ記事
Power Apps
category logo

Power Appsキャンバスアプリ 最初から知っていたら嬉しかった15のこと

(更新) (公開)

はじめに

人柱的に社内で誰もやったことがない Power Apps のキャンバスアプリ開発をしていて、「あれ?なんで?うーん...あっ!そうか!」ってなったことが何回かありました。
そうなったとき、思ったのが、「事前に先輩とかに教えてもらっていて、知っていたら、嬉しかったなぁ。」です。
そう思った事柄について、15個手短に列挙していきます。

今回取り上げた事柄は、完全に主観的かつ独断で選抜しています。あるあるランキングでもなんでもないです。単に初心者向けと高を括って勉強不足のまま始めたという側面もあります。

2023 年 4 月現在の Power Apps の話です。状況が異なる可能性があります。

全て Windows の Chrome 前提です。


目次
1Power Apps Studio
2いろいろグローバル
3変数の内容が見られる
4入力内容が反映されないことがある
5自動保存
6エクスポート前に公開が必要
7エクスポート → 更新 → 新規 → どちらも同じ
8編集中に落ちることがある
9Undo で元に戻らないことがある
10複数選択 → プロパティ変更
11Select()
12前面 背面 移動ショートカットキー
13水平垂直コンテナの名前変更は危険
14And, Or JS スタイル VB スタイル
15文字列の中に式

Power Apps Studio

Studio?そういうデスクトップアプリがあるかと思いました。

昔は、そういうデスクトップアプリがあったようです。

Power Apps のアプリ作成環境を「Power Apps Studio」と呼んでいます。
アプリの「編集」の画面のことです。
これのことです。
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 として扱われて、エラーになりません。

ギャラリーの事例は、入力内容が反映されないことがあるのとは関係無いかもしれないです。ですが、あり得ると思って各パラーメータが変になっていないか確認対象として認識しておいた方が良いと思いました。


他、ツリービュー の 画面 - 検索 に「ギャラリー」と入力したかったのにうまく入力できないことがありました。

「ギャラリー」と入力したかったのにうまく入力できない1


「ギャラリー」と入力したかったのにうまく入力できない2


自動保存

能動的に保存するときは、保存ボタンを押して保存しますが、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が書かれた部品)
と書けば良いです。
同じことをコピペして書く必要はありません。

Select関数


前面 背面 移動ショートカットキー

ツリー ビュー の上の方に表示されている方が 前面 です。

ツリー ビュー


この位置関係を変える時、・・・再配列背面へ移動 などとして、変えられます。

前面 背面 移動メニュー


しかし、部品数が増えてきて、10 個背面に移動したくなると、これを 10 回ポチポチしないといけません。

前面へ移動:CTRL + ]
背面へ移動:CTRL + [
のショートカットキーで移動できます。

前面 背面 移動ショートカットキー 動画

キーボードの配列では、[ は、] よりも上にあるのですが、[ は、下へ(背面へ)、]は、上へ(前面へ)移動します。(英語配列キーボードの場合は、左、右の関係です。)


水平/垂直コンテナの名前変更は危険

水平/垂直コンテナの名前変更を行うと、中央、右寄せなどに配置したものが初期化されてしまいました。
その他、ギャラリーが全てハーフサイズになる事例がありました。
名前変更には注意が必要そうです。

水平/垂直コンテナの名前変更 動画


And, Or JS スタイル VB スタイル

AndOrNot は、JS スタイル VB スタイルでも表記できます。


関数の表記Visual Basic 演算子表記JavaScript 演算子表記
And(x, y)x And yx && y
Or(x, y)x Or yx | y
Not(x)Not x!x

JS スタイル VB スタイル


文字列の中に式

文字列と式を連結する場合、& を使います。
例:"犬データ:" & LookUp(col_Innu, ID=1).Namae & " " & グローバル変数*2 & "匹"

&を使った連結


$"文字{式}文字" の書き方で、& の連結が不要になります。
例:$"犬データ:{LookUp(col_Innu, ID=1).Namae} {グローバル変数*2}匹"

$を使った書き方

loading...