8
12

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 5 years have passed since last update.

【#PowerApps Tip's】Officeファイルをクライアントアプリで起動させる

Posted at

前回は「【#PowerApps Tip's】OfficeファイルをOnlineで起動させる」という話題でした。今回は、PowerApps からファイルを「Officeクライアントで起動」してみたいと思います。

やりたいこと

PowerApps で、データソースがSharePoint Online のリスト。そのリストの添付ファイルを利用している状態で、PowerApps アプリ側でデータソースの添付ファイルをクリックした際などでダウンロードではなく、Officeクライアントを起動したい。
例えば、〇〇.xlsx だったら、クライアントでExcelを起動させる、というコトです。

利用するデータ・アプリ

前回と同様です。前回利用したアプリをチョイと改造して確認しています。

実際の動作

下記の動画をご覧ください。

Office クライアントで起動する方法

Officeファイルを該当するアプリケーションで開きたい場合は、下記サイトを参考に該当する URI スキームを開きたいファイルのURLの前に付けるだけ、です。

■参考URL
予約済みのファイルと URI スキーム名

たとえば、Excel、Word、PowerPoint だと下記。

  Excel(.xlsx) → ms-excel:
  Word(.docx) → ms-word:
  PowerPoint(.pptx) → ms-powerpoint:

このスキームと、開きたいファイルのURLを下記のように組み合わせる、というコト。例えば、Excelのファイルだった場合。

 ms-excel:[ファイルのURL(https://~)]

あとは、前回と同じように文字列を操作して Launch関数です。

※上記参考URLは @br_Yellow11 さんが教えてくれました。ありがとうございます!!

補足 あるいは ポイント

前回は単純なURLパラメーターを末尾に付与するだけでOKでした。今回は、開きたいアプリケーションによってURIスキームを動的に変更する必要があります。前述の動画で、追加したボタンの OnSelect アクションに記載していた処理は下記です。

UpdateContext({wkSchema: 
  Switch(Last(Split(DisplayName,".")).Result,
   "xlsx","ms-excel:"
  ,"docx","ms-word:"
  ,"pptx","ms-powerpoint:")});

Launch(wkSchema & AbsoluteUri,DisplayName)

ファイル名を"."で分割して、Last(最後の要素)を取得すると拡張子が取得できるハズです。その拡張子から、該当するスキームを変数に格納し、Launch関数に、変数に格納したスキーム+URLをパラメーターとして指定しています。上記の例は3種類しか対応していない、ということになります。

ちょっとメンドクサイですw
しょうがないね。

注意

このURIスキームを指定した場合の動作は、完全にブラウザーに依存します。おそらく、Office 365がサポートしているブラウザーであれば意図した動作をするでしょう。が、万が一、意図したアプリケーションが起動しない状況が発生した場合は・・・諦めてブラウザーを変更してみてくださいw

※アプリに不具合がない前提で、ですがw

まとめ

  • PowerApps から Officeクライアントでファイルを開きたい場合はURIスキームを付与してLaunch関数
    • 拡張子などでアプリケーションを判定する必要がある
  • URIスキームを解釈してくれるか否かは、ブラウザー依存

".txt"や".pdf"など、大半のブラウザーでデフォルト表示が可能な拡張子はURIスキームを付与せず直接URLをLaunchするとブラウザー上で表示されるコトが多いです。そのため、前述の関数で、Switch関数のデフォルト値(どれにも該当しなかった場合)に Blank() を指定しておけば、ブラウザーまかせで良しなに処理をしてくれる状態になります。すぐに把握できると思いますので試していただければ、と思います。

あ、そうだ。前回書き忘れたのですが、SPOリストの添付ファイルで試していますが、ドキュメントライブラリのアイテムでも同じ処理で動きます。たぶん。

ちなみに、Ignite 2019 を観ながら途中まで書いてたので、誤字脱字などありましてもご容赦賜れれば幸いです(汗

それでは、皆さま。素晴らしい Power Platform Life を!

8
12
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
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?