8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【ワンランク上のPower Apps】 Copy関数が便利そう!(クリップボードへコピー)

Last updated at Posted at 2023-05-02

はじめに

こんにちは。ヨウセイです。ワンランク上のおっさんはコピー関数でアプリでのちょっとした作業に活用が出来るー!
ということで、今回は最近追加されたCopy関数が便利じゃないかと思うので、その活用法を書いてみようと思います。

※2023.5.2時点のバージョン:3.23043.16の内容で記載しています

Copy関数

最近のアップデートでCopy関数が追加されました。テキストをクリップボードへコピーできる機能です。よくあるリンクをコピーなどの機能がキャンバスアプリでも使えるようになりました。

使用例
公式からの抜粋です。テキストであればクリップボードへコピーできます。
image.png
注意点
動作プロパティでのみ使用なので、ボタンなどのOnSelectやOnChangeなどに使えます。アプリ埋め込みの場合はサポートしていないようです。
image.png
公式にもある通りテキストであればクリップボードへコピー出来るので、
リンクをコピーする、や、JSON化したものをコピーする、や、
テーブルやフォームの内容も加工してテキスト化すればコピー出来るとなります。
試してみた結果とサンプルを載せます。
image.png

リンクをコピー(素のテキストやURLなど)

サンプルとしてテキスト入力コントロールにURLを記載
アイコンを追加してOnSelectにCopy関数でそれをコピーする処理を書く

Copy(TextInput.Text)

image.png
メモ帳に貼り付ける→コピーされていますね。
image.png
Teamsチャットやメールへ貼り付けてリンクを共有できます。
サンプルではアプリURLをそのままにしてますが、用途としてはアプリの特定のレコードの詳細ページへのリンクなどでしょうか。
image.png

JSON(コレクションをJSON化)をコピー

あまり用途がないかもしれませんが、データソースやコレクションをそのままJSON化したものをコピーも出来ます。
※サンプルなのでSPOリストをそのままコレクションへ入れてそれをJSON化してます。添付ファイルはエラーになるので省いてます

Set(Col,DropColumns(人材スキルリスト,"{Attachments}"));
Copy(JSON(Col,JSONFormat.IgnoreBinaryData));

image.png
メモ帳に貼り付ける→コピーされていますね。※汚くてすいません。
★どれくらいのデータ量が対応できるかは未検証です。以下でいうと2万文字以上はできました。
image.png
もう少し加工したデータであればJSONで値が欲しいよという場合は使えるかもしれません。

テーブル(ギュラリー表示内容)を加工してコピー

これが一番用途あるんじゃ?と思った内容です。
ギャラリーに表示したデータをコピーして列構成にしてエクセルに張るなどに活用できるかと。
image.png

サンプル①:列名と値をタブ区切り
対象の列名と値を出し、タブ区切りでつなげる。1行ずつ改行。
※スキル言語は複数の選択肢列なのでカンマ区切りで加工

Copy(Concat(Gallery1.AllItems,
Concatenate("氏名:",氏名,Char(9),"アドレス:" ,メールアドレス,Char(9),"言語: ",Concat('スキル(言語)',Value ,","))
 ,Char(10)))

image.png
メモ帳に貼り付ける→こんな感じでコピーされます
image.png
Excelに貼り付け →これだと使いずらいのでサンプル②では列構成に変えました
image.png

サンプル②:列ヘッダを付けて値をタブ区切り
image.png

Copy(
    Concatenate("氏名",Char(9),"アドレス",Char(9),"言語",Char(10),
    Concat(Gallery1.AllItems,
    Concatenate(氏名,Char(9),メールアドレス,Char(9),Concat('スキル(言語)',Value , ","))
 ,Char(10))))

Excelに貼り付け →これならそのままデータとして使えますね!
image.png
★ギャラリーのデータを元にしているため(委任警告なしのコレクション使用なしで)100件まで取れて、スクロールで次を表示する実装の場合は、出ているまでの取得となります。コレクションをItemsにしている場合などは設定値上限のの500~2000までとなります。
→実装によって、ギャラリーのAllItemsにするのか、コレクションをもとにするのかなど調整ください。

フォームの内容をコピー

おまけにフォームのコピーです。フォームの内容はフォーム.Updatesで取れます。
同じような感じですがこちらは列名、タブ、値 で改行して次の値...としています。
image.png

Copy(
    With({data:Form2.Updates},
    Concatenate("氏名",Char(9),data.氏名,Char(10),"アドレス" ,Char(9),data.メールアドレス,Char(10),"言語",Char(9),Concat(data.'スキル(言語)',Value ,","),Char(10),"ポスト",Char(9),Concat(data.'スキル(ポスト)',Value ,","),Char(10),"コメント",Char(9),data.コメント)
    )
);

メモ帳に貼り付け →Teamsなどにパッと転記する際などに便利かと。
image.png
Excelに貼り付け →1レコードごとのデータとして使えそうですね。
image.png

おわりに

ということで今回は新たに追加されたCopy関数について、使い方と思いついた活用方法を載せてみました。
リンクのコピー機能はWebアプリなどでよくあるし、以前も作りたかったけど出来なかったので今回のアップデートはうれしい限りです。
また、ギャラリーに出しているのをエクセルフォーマットでも欲しいという要件があったりすると思います。フローを使った実装をしてそこそこの工数がかかったりもします。(内容にもよりますが)
実際にはそこまで重要性はなく、とりあえず手動を含めてもいいからというレベルの場合もあるので、そういった場合はこの機能で代替え効くかもなと思いました。
自分も出たばかりの機能でまだ実際には試せてないので今後活用して行こうと思います。それでは。

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?