【Filemaker】ファイルメーカーにURLスキームでJSONデータを登録(ショートカット編)


iPhoneやiPadで動くFileMakerGoカスタムAppは、インポートスクリプトがサポートされていないので、JSON関数を使ったデータ取り込みに挑戦してました。

例えば、メールアプリで受信したメールのひとつの記事の本文を『すべて選択』し、共有メニューからショートカット(Appleの純正iOSアプリ)経由で、所定のフィールドにインポートするという処理フローです。

最初考えたフロー
  1. メールアプリでどれか一つ受信メールを開き、本文をすべて選択する。
  2. 共有メニューでショートカットを選択する。
  以下、ショートカットでのステップ
  1. 『辞書』ショートカットの入力を値として、キーと値を設定する。
  2. 『URL』fmp://$/カスタムApp名?script=データ追加スクリプト&パラメータ=『辞書』
  3. 『URLを開く』
  以下、FileMakerProカスタムAppでのデータ追加スクリプト
  1.  $変数 = GET ( スクリプト引数 )
  2. $値 = JSONGetElement ( $変数 ; "キー" ) 
  3. フィールド設定 ( テキストフィールド ; $値 )
これだと、メール本文の文字によって、JSONGetElement がエラーとなる場合があることがわかりました。どうもショートカットの『URL』でのURLエンコードがJSONのデータに配慮してくれていないようです。
そこで、以下のフローにしたところ、エラーが発生しなくなりました。


修正後のフロー

 以下、ショートカットでのステップ
  1. 『辞書』ショートカットの入力を値として、キーと値を設定する。
  2. 『テキスト』前のステップで生成した『辞書』をテキストに変換する。
  3. 『URLエンコード:エンコード』
  4. 『URL』fmp://$/カスタムApp名?script=データ追加スクリプト&パラメータ=
  5. 『テキスト』上記の『URL』と『URLエンコード』結果を文字列結合する。
  6. 『URLを開く』
つまり、URLスキームの文字列を前半と後半(JSON)に分けてURLエンコードしてみたらうまくいったというわけです。

ちなみに、引っかかった(URLスキームの文字列として適切に変換してくれなかった)文字は、"="でした。

 修正後のフロー(サンプル)


0 件のコメント:

コメントを投稿