はじめに
今回は以前もQiitaの方でご紹介したCopy関数を使ったURLコピー機能と非対応時の対応サンプルです。
サンプルとして前回ご紹介したParam関数を使ったレコードを指定したURLを使います。
Param関数の記事はこちら
Param関数 でアプリ起動時に指定ページを開く、他
はじめに Param関数ではパラメータを渡してアプリを起動することが出来ます。パラメータを使ってアプリ起動時に特定の画面を指定(レコード詳細画面など)やフィルター初期値を指定して開くなどに活用できます。今回は自動生成アプリをベースに指定したアプリ詳細画面へ遷移する実装サンプルを紹介しようと思...
Copy関数について
Copy関数は今年2023年の4月、5月頃に追加された機能です。
当時Qiitaに投稿してこちらでも便利そうな使い方をご紹介しています。
👆 今回ご紹介するURLコピーの実装以外に、テーブル、フォーム内容をコピーするサンプルをご紹介しています。
※そっちのほうが有用かもですが。
公式は以下です。実装は簡単でCopy(<文字列>) をボタンやアイコンのOnSelectやOnChangeに書くだけ。
Power Apps の Copy 関数 – Power Platform | Microsoft Learn
文字列にすればなんでもコピー出来るから結構便利だよね!
ちょっとした便利機能として付けてみたいね!
埋め込みアプリには非対応とあり →対応したかも??
公式にもある通り、残念ながら埋め込みのアプリの場合は非対応となります。(SPOやBIなど)
出来ればこの辺も対応してもらえるとありがたいのですがしょうがないですね。仕組み上の問題の様子ですし。
ですので、その可能性があるアプリの場合はアラート対応を入れたほうが親切ですね。
公式にもそうしたほうがいいよとあります。
TIPS★この記事の最後で追加情報です!SPOとTeamsは2023/9/27時点試したら使えた!(BIは試してない)
公式(日英ともに)にはまだサポートしないと載っていますが改善されたのかも??前から使えてた??
★2024/3月更新 Teams上で使えない事象を確認しました
NOTE公式には埋め込みアプリはサポート外とあるのですが、SPO上の埋め込みアプリでも、Teams上アプリでも使えていたのですが、先日確認したところ、Teams上のアプリだとCopy関数がエラーとなり取得出来なくなっている事を確認しました。新Teamsにしたからなのか、そのうち出来るようになるのかなど、詳細は不明です。(旧Teamsになぜか戻せなくなったため未検証)
→本記事はもともとエラーが起こる前提の対処法としてエラーアラートにコピー内容を入れる実装も書いてますので、そちらなど活用して対応いただければと思います。
URLコピー 実装サンプル
実装はとてもシンプルです。今回はParam関数の記事で扱った指定レコードをパラメータに持たせたアプリのURLを作成してコピーします。このURLを叩けば直接このレコードを表示した画面を開くというものです。
WebアプリでよくあるURLコピー機能をサクッと30秒で作れますね。
チャットでこの商品について話したんだけども、ちょっと見て」とリンクを送りたい場合などに便利な機能だと思います。
ということで簡単にURLコピー機能が出来ました。
これをチャットやメールに貼り付けたりして情報連携に使えますね。
成功・失敗アラートを入れる
上記だけで基本完了ですが、埋め込み型アプリの場合これが効きません。(と思っていた)
といっても代替えは出来るのでその実装サンプルを載せます。
成功アラートを追加
まずは成功時も表示したいと思いますので成功アラートを追加しています。
IfErrorで失敗時のアラートを追加
次にIfErrorを使って失敗時のアラートを実装します。
IfErrorについてはプレビュー機能「数式レベルのエラー管理」をオンにした状態(今は既定でオン)で使います。
詳細は公式ご確認ください。
Power Apps の Error、IfError、IsError、IsBlankOrError 関数 – Power Platform | Microsoft Learn
TIPSIfErrorは処理、失敗したらやる処理、次の処理、失敗したらやる処理・・・とカンマ区切りで繋げていけます。
失敗したらやる処理になったら以降はスキップされます。連続的な処理のエラーハンドルに便利です。
そのうち記事にしようかと思います。
Code//以下の場合、Copyに失敗したら失敗アラート、成功したらその次の処理の成功アラートとなる
IfError(
Copy(Concatenate(“<URL>&itemId=”,CurrentItem.ID));
,
Notify(“クリップボードへのコピーに失敗しました”,NotificationType.Error);
,
Notify(“クリップボードへコピーしました”,NotificationType.Success);
);
エラーアラートにURLを追加 (ついでにWith関数使用)
上記だと埋め込み型の場合は使えないよねーとなるので、代替え案としてアラートにそのまま内容を載せます。
ついでにWith関数を使って同じことを書くのを一度で済むようにしています。
※この記事の本筋ではないのでイメージ沸かない方は同じの2回書くで大丈夫です。
With関数はその中だけで使えるUpdateContextのようなものです。覚えると結構便利な関数です。
Power Apps での With 関数 – Power Platform | Microsoft Learn
CodeWith({url:Concatenate(“<URL>&itemId=”,CurrentItem.ID)},
IfError(
Copy(url);
,
Notify(“クリップボードへのコピーに失敗しました。こちらをコピーして下さい:” & url ,NotificationType.Error);
,
Notify(“クリップボードへコピーしました”,NotificationType.Success);
);
);
上記でエラーが出るようにテストしてみます。
サンプルでは一旦必ずエラーとなる1を0で除算を追加してエラーを出します。
エラーが出ると思います。確認出来たら公開時は1/0は削除しましょう。
アラートのテキストはちゃんとコピー出来る
上記でアラート上にURLを載せれました。
ここで、編集画面のプレビューで試してる際に、「アラート(Notiry)のテキストが選択できないじゃん!」
と思われたかと思います。安心してください。コぴれます!(再生では)
編集プレビュー上だとコピーできないのですが、公開して再生したアプリではテキストが選択できるのでコピー出来ます。
TIPS以前は公開アプリでも編集プレビューと同じくひとつずつしか出なかったと思います。文字列の選択も出来なかったと思う(記憶違いかも?)
公開アプリで動作させると以下のように連続操作すると積み重なるようになっています。
モデル駆動のアラートやカスタムページもこんな感じなのでアップデートで統合されたのかなと思われます。
いつのまにかアップデートされていたのね!なぜだか今まで気づかなかったわ!
一杯でるのもちょっとと思うけど、残ってくれた方が実装は楽だわ!
埋め込みアプリで試してみる。 →使えるじゃん!?
と、上記まで進めていざTeams上のアプリで試したところ、あれ?、普通にエラーなくコピーが出来ました!
さらにSPOページ上に埋め込んだアプリで試したところ、、あれ?、出来ました!(BIは試してません)
当時から出来ていたのか使えるようになったのか、、ちょっと分からず。当時ちゃんと試したことがなかった気がします。
今のところは公式ページがサポートしていないとなっているので情報更新待ちですかね。
もしくは埋め込み具合によっては使えないケースがあるのかも?ご存じの方いらしたらコメントお願いしますm(__)m
とりあえず使えない場合を考慮して上記のエラー対応を入れておけば間違いはなさそうです。
無くてもよさそうではありますが。。
それにしても埋め込みアプリでも対応できるなら死角なしですね!よかったです。
おわりに
ということで、今回はCopy関数でクリップボードへURLをコピーする機能を非対応の対応も込みでご紹介しました。
記事書きながら実装して最後に試したら使えるじゃん!となったという結果でした。
まあ念のための対応として入れておいて損はないですし、使えるようになった(自分の試した限りは)という事が
わかったので万々歳です。それでは。
使えるんならそもそも気にしなくて良かったが、気にしたから使えることに気付けたとも言えるな。
関連
関数・数式のチートシート
Power Apps Power Fx 数式リファレンス カテゴリ別チートシート
最終更新日:2024/3//19 公式のPower Fxリファレンスをカテゴリ別に記載したチートシートです。 名前をど忘れした数式、関連する関数・数式の把握、最近の更新チェックなどにお役立てください。...
Copy関数について以前の記事
Param関数についての記事
Param関数 でアプリ起動時に指定ページを開く、他
はじめに Param関数ではパラメータを渡してアプリを起動することが出来ます。パラメータを使ってアプリ起動時に特定の画面を指定(レコード詳細画面など)やフィルター初期値を指定して開くなどに活用できます。今回は自動生成アプリをベースに指定したアプリ詳細画面へ遷移する実装サンプルを紹介しようと思...
アプリIDやURLの取得を探った記事も近日公開予定
この記事は役に立ちましたか?
もし参考になりましたら、下記のボタンで教えてください。
コメント