PowerAppsのLaunch関数でアプリから直接、メール、テキスト、通話をし、Webページを開く
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関数でアプリから直接テキストメッセージの送り方
同じ様にテキストメッセージも送る事ができます。
この「メッセージ」アイコンを使いましょう。

その「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での例で、英語版ですが、
- 「ホーム」画面から「設定」、
- スワイプダウンして、「Power Apps」から、
- 英語版では「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オンラインコースを作りました!
⇒半額になる「ディスカウントリンクページ」へ
「こちらの記事も読まれてます。」