Copy関数 URLコピー機能(アラート対応 & 埋め込みアプリでもCopy使えるっぽいぞ? )

はじめに

今回は以前もQiitaの方でご紹介したCopy関数を使ったURLコピー機能と非対応時の対応サンプルです。
サンプルとして前回ご紹介したParam関数を使ったレコードを指定したURLを使います。

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秒で作れますね。
チャットでこの商品について話したんだけども、ちょっと見て」とリンクを送りたい場合などに便利な機能だと思います。

コピーアイコンを追加

OnSelectにリンクURLを入れる。パラメータは今のIDを指定

公開して再生。クリップボードにアイテムリンクURLが保存される

ということで簡単に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が表示された

エラーが出ると思います。確認出来たら公開時は1/0は削除しましょう。

アラートのテキストはちゃんとコピー出来る

上記でアラート上にURLを載せれました。
ここで、編集画面のプレビューで試してる際に、「アラート(Notiry)のテキストが選択できないじゃん!」
と思われたかと思います。安心してください。コぴれます!(再生では)
編集プレビュー上だとコピーできないのですが、公開して再生したアプリではテキストが選択できるのでコピー出来ます。

再生したアプリ上ではNotiryのテキストは選択できる。のでコピー出来る。

TIPS以前は公開アプリでも編集プレビューと同じくひとつずつしか出なかったと思います。文字列の選択も出来なかったと思う(記憶違いかも?)
公開アプリで動作させると以下のように連続操作すると積み重なるようになっています。
モデル駆動のアラートやカスタムページもこんな感じなのでアップデートで統合されたのかなと思われます。

ぱわ代

いつのまにかアップデートされていたのね!なぜだか今まで気づかなかったわ!
一杯でるのもちょっとと思うけど、残ってくれた方が実装は楽だわ!

埋め込みアプリで試してみる。 →使えるじゃん!?

と、上記まで進めていざTeams上のアプリで試したところ、あれ?、普通にエラーなくコピーが出来ました!
さらにSPOページ上に埋め込んだアプリで試したところ、、あれ?、出来ました!(BIは試してません)

当時から出来ていたのか使えるようになったのか、、ちょっと分からず。当時ちゃんと試したことがなかった気がします。
今のところは公式ページがサポートしていないとなっているので情報更新待ちですかね。
もしくは埋め込み具合によっては使えないケースがあるのかも?ご存じの方いらしたらコメントお願いしますm(__)m

とりあえず使えない場合を考慮して上記のエラー対応を入れておけば間違いはなさそうです。
無くてもよさそうではありますが。。
それにしても埋め込みアプリでも対応できるなら死角なしですね!よかったです。

Teams埋め込みアプリ →普通にコピー出来ている

SPOサイトのページへの埋め込みアプリ。ふつーにコピー出来た!

おわりに

ということで、今回はCopy関数でクリップボードへURLをコピーする機能を非対応の対応も込みでご紹介しました。
記事書きながら実装して最後に試したら使えるじゃん!となったという結果でした。
まあ念のための対応として入れておいて損はないですし、使えるようになった(自分の試した限りは)という事が
わかったので万々歳です。それでは。

パワ谷さん

使えるんならそもそも気にしなくて良かったが、気にしたから使えることに気付けたとも言えるな。

関連

関数・数式のチートシート

Copy関数について以前の記事

Param関数についての記事

アプリIDやURLの取得を探った記事も近日公開予定

この記事は役に立ちましたか?

もし参考になりましたら、下記のボタンで教えてください。

ヨウセイ

ヨウセイ

一般職からSharePoint、C#、.NET系技術者へ、そこからPower App、Power Automate技術者へと転身。 ワンランク上のおっさんはPower Appsでシステム開発が出来る〜! qiitaや自社HPでも技術ブログを書いていました。

関連記事

コメント

この記事へのコメントはありません。

CONTENTS