業務改善と標準化を同時に実現:MS 365業務システム開発

PowerAppsのLaunch関数でアプリから直接、メール、テキスト、通話をし、Webページを開く

    
PowerAppsのLaunch関数でアプリから直接、メール、テキスト、通話をし、Webページを開く
\ この記事を共有 /
PowerAppsのLaunch関数でアプリから直接、メール、テキスト、...

PowerAppsのLaunch関数はアプリから自動で指定したWebページを開けたり、直接Eメールやテキストを送る、また通話を始められる便利な関数です。この記事では微妙に違う各機能の引数の書き方も明記しています。

(動画時間:9:51)

PowerAppsのLaunch関数とは?何ができるのか?

こんにちは、リーンシグマ、ブラックベルトのマイク根上です。
業務改善コンサルをしています。

今日はこの動画リクエストからです。

場所ボタン 動画リクエスト

「場所ボタンの処理(現在地を地図に表示)方法についての動画を作っていただけると幸いです。」

Sweet Cookieさんリクエストありがとうございました。
先日PowerAppsで勤怠管理アプリを作って、
その紹介動画に対してこのコメントを頂きました。
⇒「PowerApps で本格的な勤怠管理アプリを作る【テレワーク対策】」

勤怠管理アプリの退勤ボタン

上図がそのアプリなのですが、
下の方の「出退勤記録表」内に「場所」と
書かれたボタンがあり、それをタップすると
その日に打刻した場所をグーグルマップ上で表示します。
そのボタンの機能の詳しい作り方を聞かれているのです。

そのボタンの「OnSelect」属性を見ると、
それにはLaunch関数を使っています。

「OnSelect」属性 =
Launch(
  ”https://www.google.com/maps/place/” & ThisItem.Start_GPS_Ido & “,” & ThisItem.Start_GPS_Keido
)

Launchは英語で「起動する」や
ロケットなんかを「打ち上げる」などの意味があり、
このLaunch関数は端末内の他の機能を
「起動して」アプリから自動で:

  • 指定したWebページをブラウザー上で開けたり、
  • 直接Eメールやテキストを送る、
  • また通話を始める事もできる便利な関数です。

これで業務アプリの業務フローとしてスムーズに
外部の人と連絡が取れる様にできるのです。

例えば僕が前に作った棚卸アプリでは、
それで棚卸業務をしながら発注の準備ができて、
そのままアプリからEメールやテキストで
発注ができる仕組みを作りました。
それをLaunch関数でやったのです。

今日はそれらの使い方をご紹介し、
その後にご質問の場所ボタンの作り方をお見せします。

Launch関数での端末内の各機能の起動の仕方

Launch関数でWebページやGoogleでの検索結果ページの出し方

PowerAppsの開発画面で、
ボタンを一つ追加してLaunch関数を使います。
次の数式の様に飛びたいウェブページのURLを
ダブルコーテーションで挟むだけです。

「OnSelect」属性 =
Launch(“econoshift.com”)   [引数1つ]

このURLは僕のウェブサイトのURLですが、
Altキーを押しながらクリックすると、
ブラウザーの新しいタブが開いてそのページが開きます。

例えば、業務アプリである段階で
指定のキーワードでグーグル検索をしたいとします。
そのキーワードの前に「google.com/search?q=」を入れると、
グーグル内でそのキーワードでの検索結果を表示します。

「OnSelect」属性 =
Launch(“google.com/search?q=econoshift.com”)   [引数1つ]

昔在庫管理アプリを作った時に商品のバーコードをスキャンして、
その番号でグーグル検索をしてその商品の情報を表示する仕組みを
このLaunch関数で作った事があります。

Launch関数でアプリからメールを送信する方法

次にLaunch関数でアプリからメールを送る機能を作りましょう。
次の画面で簡単なメール機能を作っておきました。

メールを送る簡易アプリ

各テキスト入力に送信先のメルアド、件名、本文を入れると、
送信ボタンが押せる状態になり、それを押すと、
お使いのメーラーが開きその内容が書き込まれているので
直ぐにメールを送信する事ができます。

その時のLaunch関数の書き方はこれです。

「OnSelect」属性 =
Launch(“mailto:” & TextInput1.Text,”subject”,TextInput2.Text,”body”,TextInput3.Text)
  [引数5つ]

これは各テキスト入力コントロールを参照していますが、
引数の構造はこうなります。

「OnSelect」属性 =
Launch(“mailto:” & メルアド,”subject”, 件名, “body”, メール本文)   [引数5つ]

ちなみにこの「送信」ボタンは
テキスト入力が一つでも入力されていないと
ボタンが押せない状態にして
誤送信の防止をしています。

それをするのに「DisplayMode」属性に次の数式を入れています。

「DisplayMode」属性 =
If(!IsBlank(TextInput1) && !IsBlank(TextInput2) && !IsBlank(TextInput3),
   DisplayMode.Edit,
   DisplayMode.Disabled
)

要は全てのテキスト入力が入力されたら、
Editに、つまり、クリック可能にし、
そうでなければ、Disabled、
つまり使用不可状態になるのです。

これを色んな所で使うとアプリの誤操作防止になり、
集めたデータの精度が上がります。

Launch関数でアプリから直接電話を掛ける方法

次にアプリから直接通話をする機能を見ていきましょう。
これは例えばアプリに顧客リストや業者リストを載せて、
そこから直接電話を掛ける事ができます。

ギャラリーコントロールで簡単に業者リストを作りました。

ギャラリーで作った簡易業者リスト

ギャラリー内の内部ラベルを選んだ状態で、
メニューバーの「挿入」、「アイコン」から、
何でもいいからアイコンを一つ追加します。

右のプロパティ内の「アイコン」で、「電話」で検索します。

最近はアイコンの数が増え、この方法だと
最初のリストに載っていないアイコンも見つかります。

そのアイコンの「OnSelect」属性にLaunch関数で
「“tel://”」を入れてギャラリー内の
各アイテムの電話番号でつなげています。
これは一つの文字列になるようにして下さい。

「OnSelect」属性 =
Launch(“tel://” & 電話番号) [引数1つ]

PCには電話を掛ける機能がありませんので、
スマホでその動きを見てみましょう。
このアイコンをタップすると、
その選択した業者に直接アプリから電話を掛けられます。

Launch関数でアプリから直接テキストメッセージの送り方

同じ様にテキストメッセージも送る事ができます。
この「メッセージ」アイコンを使いましょう。

PowerApps アイコンを検索して変更する2

その「OnSelect」属性にLaunch関数で
「“SMS:”」に続けて相手の携帯番号が来るようにするのです。
これも一つの文字列になるようにします。

「OnSelect」属性 =
Launch(“SMS:” & 携帯番号)  [引数1つ]

スマホで動きを見ると、
メッセージアイコンをタップすると
その端末の既定のテキストアプリが開き、
メッセージを書いて送れます。

アプリ内で作成したメッセージを
自動で入力してくれれば便利ですね。

例えばテキスト入力コントロールを追加して、
そこで入力した内容をテキストで送るようにできます。
しかし、その場合ユーザーの端末が
アイフォンかアンドロイドかによって書式が違ってきます。

アイフォン本文付き:
Launch(“SMS:” & 携帯番号 & “&body=” & テキスト本文)  [引数1つ]


アンドロイド本文付き:
Launch(“SMS:” & 携帯番号, “body”, テキスト本文)  [引数3つ]

アイフォンの書式はこの様に引数は一つだけですが、
アンドロイドだと引数は三つになります。

今の所、簡単に自動で端末の種類を検出できないので、
ユーザーの端末の種類が混在している場合は
実務でこの機能を使うのは難しいかもしれません。
ユーザーが皆同じ種類の端末でしたらぜひ使ってみて下さい。

アプリでユーザーの位置情報の取得の仕方

以上がLaunch関数の基本的な使い方でした。

それでは今日の動画リクエストの
「場所」ボタンの作りを見てみましょう。

これが勤怠管理アプリ上で、
仕事の初めに「出勤」ボタンをタップすると、
確認画面が出て「確認」ボタンをタップしたら、
その時の時間がクラウドのSharePointリストに保存されます。

そのボタンの「OnSelect」属性内のPatch関数で行います。
その部分の数式がこれです。

「OnSelect」属性 =
Patch(
   Tbl_Labor_Records,
   {ID: Blank()},
   {
      Date: Today(),
      Employee: ユーザー,
      Start_Time: 打刻時間,
      Start_GPS_Ido: Location.Latitude,
      Start_GPS_Keido: Location.Longitude
   }
)

Patch関数で今日の日付やユーザー名、出勤時間と同時に
「Location.Latitude」と
「Location.Longitude」が保存されています。
Latitudeは英語の「緯度」でLongitudeは「経度」です。

この式でスマホのGPS機能から、
ユーザーの居場所の地球上の緯度と経度を
取得できるのです。

そしてこの式でそのデータをSharePointリストの
「Start_GPS_Ido」と「Start_GPS_Keido」
と言う列に保存します。

スマホでこのアプリを立ち上げた時に

「このアプリは端末の位置情報に
アクセスしようとしています。許可しますか?」

みたいなメッセージが出ます。その時は許可して下さい。
でなければ緯度と経度の情報は
空欄としてクラウド保存されます。

しかし、後で許可に変更する事もできます。
念のためにそれをご紹介すると、
iPhoneでの例で、英語版ですが、

  1. 「ホーム」画面から「設定」、
  2. スワイプダウンして、「Power Apps」から、
  3. 英語版では「Location」、
    日本語版ですとたぶん「位置情報」です。
    ここからアプリが位置情報を使える状態にして下さい。

Launch関数でグーグルマップ上に位置情報の位置を表示する方法

これにより各出退勤のボタンが押される度に
緯度と経度のデータがクラウド保存され、
その履歴が下の出退勤記録表に出てきます。

勤怠管理アプリ 出退勤記録表

各記録に「場所」ボタンがあります。
その「OnSelect」属性を見ると、
Launch関数の書式でグーグルマップを開き、
指定の緯度と経度の場所を表示できるのです。

「OnSelect」属性 =
Launch(“https://www.google.com/maps/place/” & ThisItem.Start_GPS_Ido & “,” & ThisItem.Start_GPS_Keido)  [引数1つ]

分かり易く構造を書くとこうです。

「OnSelect」属性 =
Launch(“https://www.google.com/maps/place/” & 緯度の数値 & “,” & 経度の数値)
  [引数1つ]

実際にクリックしてみます。

勤怠管理アプリの場所ボタンの結果

これは東京タワーの緯度と経度を入れておいたんですが、
こんな機能を簡単に実装できてしまうなんてすごいですよね。

皆さんだったらこのLaunch関数の機能をどの様に使いますか?
これらの機能をアプリに取り入れると
今までになかった業務改善ができると思います。

今回また、勤怠管理アプリをお見せしましたが、
このアプリの作成を題材にした
Udemyオンラインコースの中級編を今制作中です。
コース内で実際にこのアプリを作成して
アプリ作成の沢山のコツを体得できるのです。

それと同じUdemyのオンラインコースの初級編も
大変ご好評を頂いています。
概要欄にリンクを張っていますのでご覧になってみて下さい。

⇒「マイクロソフトPowerApps【コントロールと関数 完全ガイド】初級編」

初級編:「マイクロソフトPowerApps【コントロールと関数 完全ガイド】」
Udemyオンラインコースを作りました!

⇒半額になる「ディスカウントリンクページ」へ

「こちらの記事も読まれてます。」