今回はその①、その②で作成したショートカットを組み合わせて完成させます。
実装概要
ショートカットは他のショートカットを関数のように呼び出して利用することができます。
それを使って、こんな感じに実装していきます。

歩数送信ショートカットを起点とします。
①ヘルスケアAppより2日分の歩数を読み込み、1件づつ歩数POSTショートカットを使って歩数収集APIにPOSTします。
歩数POSTでは固定値を設定していたusername,stepdate,stepcountを引数として受けとれるようにします。
②歩数収集APIからの戻り値を歩数送信ショートカットに戻します。
歩数POSTではアラートとして表示していた戻り値をショートカットの戻り値として返せるようにします。
③一件ごとの処理結果をログに書き込みます。
歩数POSTショートカットに引数を受け取れるようする

歩数POSTショートカットの右上の・・・をタップし、ショートカットの中身を表示します。
ショートカットで複数項目の引数を取得できるようにするには、辞書を用います。
歩数POSTの一番下の+をタップします。

スクリプティングの入力から辞書を取得をタップします。
入力から辞書を取得のボックスを長押しして一番上までドラッグします。

入力をタップして、一覧からショートカットの入力をタップして選択します。

URLの内容を取得のボックスの表示を増やすをタップしてパラメータを表示します。
キー:usernameのテキストを削除し、辞書をタップします。

キー値の値を取得をタップします。
テキストボックスが表示されるので、usernameと入力してOKボタンをタップします。

同じ要領でstepdateとstepcountも設定します。これで引数を辞書として受けて、キー値をそれぞれPOSTのパラメータとして設定するところができました。
次に戻り値を渡す部分ですが、これは単にアラートのボックスを削除するだけです。
歩数送信ショートカットで戻り値の取得ができるようになります。アラートのボックスの右上の×をタップして削除します。
これで歩数POSTの修正は完了です。右上の完了をタップします。
歩数送信ショートカットの改修
ログ書き込み処理
ログはiPhone標準のメモを起動の都度作成し、そこに書き込むことにします。

歩数送信ショートカットの右上の・・・をタップしてショートカットの中身を表示し、一番下の+をタップしアクションを追加します。
書類のアクションの一覧からメモを作成をタップして選択します。

メモのボックスを長押しして一番上までドラッグします。
メモのボックスの繰り返しの結果の部分を削除し、現在の日付をタップして入力します。

メモのボックスの表示を増やすをタップし、作成シートを表示のスライドボタンを無効にします。

フォルダをタップし、新規メモを追加するフォルダを選択します。
通常だとメモ[iCloud]を選択すればよいと思います。
ヘルスケアボックスの制限のスライドボタンを無効にします。
歩数POSTショートカットを呼ぶ部分

アラートのボックスは利用しないので、右上の×をタップして削除します。
引数を辞書として渡すために辞書を用意します。
一番下の+をタップし、スクリプティングのアクション一覧から辞書をタップして選択します。

辞書を長押しして繰り返すの内側に移動します。
新規項目を追加をタップし、一覧からテキストを選択します。

キーとテキストが入力できるので、キーにusernameと入力し、テキストにあなたの名前を入力します。
もう一度新規項目を追加をタップし、一覧からテキストを選択します。
キーにstepdate、テキストに繰り返し項目をタップして入力します。

繰り返し項目には、一覧から開始日を選択します。
同様に新規項目を追加をタップし、一覧からテキストを選択します。
キーにstepcount、テキストに繰り返し項目をタップして入力、一覧から値を選択します。
ショートカットを実行する処理

一番下の+をタップし、Appをタップ、Appのアクション一覧からショートカットをタップします。
ショートカットの一覧からショートカットを実行を選択します。

ショートカットのボックスを長押しして辞書の下に移動します。
ショートカットをタップして、一覧から歩数POSTを選択します。

表示を増やすをタップし、入力に辞書が設定されていることを確認します。
ショートカットの戻り値をログに書き込む

一番下の+をタップし、書類の一覧からメモに追加をタップします。
追加されたメモのボックスはショートカットのボックスの下に移動します。

メモのボックスにはショートカットの結果が既に設定されていることがわかります。
ショートカットの後にアクションを配置することで、ショートカットの戻り値を受け取ることができます。
メモをタップします。
一覧からマジック変数を選択をタップします。

ここで一番上で作成を宣言したメモを見ると、ノートという記載がありますが、これは作成したメモをノートという名前(マジック変数)で
アクセスできることを表しています。
ノートをタップして選択します。
これでノートと名前の付いたメモにショートカットの結果が書き込みされるようになります。
ここまでで改修は完了です。
動かしてみる
ショートカットを実行

右下の再生マークをタップします。

無事実行完了したようです。
右上の完了をタップしてショートカットを終了します。
ログを見てみましょう。
ホーム画面からメモをタップして実行します。

メモのフォルダ一覧からiCloudのメモをタップします。
先程ショートカットを実行した時間のメモがあります。
タップして中を見ると、狙い通り一件ごとに処理結果が書かれていることがわかります。
重複エラーを起こしてみる
エラーも見たいので、もう一度ショートカットを実行して重複エラーを起こしてみます。

すべてのショートカットの一覧から、歩数送信をタップするだけで実行できます。

完了したらメモを見てみましょう。
エラーも一件ごとに書かれていることがわかります。
ショートカットをホーム画面から実行できるようにする

歩数送信ショートカットを開いて、右上の・・・をタップします。
詳細が表示されるので、ホーム画面に追加をタップします。
アイコンをタップすると、アイコンを編集のダイアログが表示されるので、
ここでアイコンを変えることもできます。

アイコンをタップし、ファイルを選択をタップします。

右上の追加をタップするとホーム画面に追加されます。
DBに登録できたか確認
PowerShellを起動してHerokuにログインします。
PS C:\Users\User> heroku login -i
heroku: Enter your login credentials
Email [【登録したメールアドレス】]:
Password: ************
Logged in as 【登録したメールアドレス】Heroku Postgresに接続します。
PS C:\Users\User> heroku pg:psql 【Herokuデータベース名】 --app 【アプリ名】
--> Connecting to 【Herokuデータベース名】
psql (13.3、サーバ 13.4 (Ubuntu 13.4-4.pgdg20.04+1))
SSL 接続 (プロトコル: TLSv1.3、暗号化方式: TLS_AES_256_GCM_SHA384、ビット長: 256、圧縮: オフ)
"help"でヘルプを表示します。接続できたらテーブルの中身を見てみましょう。
【アプリ名】::DATABASE=> select * from step_hist_row;
id | user_name | step_date | step_count
----+-----------+---------------------+------------
1 | tanupapa | 2021-10-12 00:00:00 | 5
2 | tanupapa | 2020-10-13 10:11:12 | 10
4 | tanupapa | 2021-10-15 06:40:00 | 52
5 | tanupapa | 2021-10-15 06:54:00 | 67
6 | tanupapa | 2021-10-15 07:06:00 | 141
7 | tanupapa | 2021-10-15 07:18:00 | 196
8 | tanupapa | 2021-10-15 07:36:00 | 41
・
・
・ちゃんとDBへの書き込みもできたようです。
ここまででiPhoneの処理については完了です。
次回からは送信された歩数を表示する機能を開発していきます。



コメント