今回はDXに関する記事です。
以前「FileMakerからLINE WORKSへの通知方法①」と題して、備忘録的な記事を執筆したのですが、直接事業には関係ないしどうせ誰も読まないだろうと思い、②以降の執筆を保留していました。
すると先日、記事の続きをどうやるのかと問い合わせをいただきました。こんな記事を読んでくださる方もいるんだなあと思い、何気なくアクセスログを確認してみたところ、意外に記事へのアクセスが多いことが分かりました。その上、関連ワードでGoogle検索するとまさかのトップ表示で、これには驚きました。
このまま終わらせるのは少し不親切だなと思い、今回は続きとなる第②弾の記事を執筆してみました。なお、最終的には第③弾で終わりになる予定ですが、続きがいつになるかは私にも分かりません⋯。
目次
FileMakerでやること
前回まででLINE WORKS側での下準備は完了です。次はFileMakerでの設定を行う必要がありますが、その前に改めて全体像を確認しましょう。
- FileMakerから文字情報を送信する。
↓ cURLを使ってJSON形式で送信 - Make(旧integromat)を介してLINE WORKSへ転送する。
↓ APIで連携して送信 - LINE WORKSのBotを使ってグループチャットにPOSTする。
FileMakerから任意の文章を送信するために、FileMakerの「URLから挿入」というスクリプトを使います。このスクリプトにあるcURLカールの指定オプションを使用することで、指定の情報を外部へ送信できます。
グローバルフィールドの準備
まずは、グローバルフィールドを1つ準備します。このフィールドは「URLから挿入」の「ターゲット」として使います。すると、スクリプト実行後、このフィールドにサーバーからのレスポンスが返るようになります。ついでに、通知したい内容を入れる「内容」フィールドも作成しておきます。
スクリプトの作成
次に、文章を送るためのスクリプトを作成します。以下の2ステップで実行できるようなものにします。
- 変数を設定
- JSON形式で送りたい文章を設定
- URLから挿入
- URLから挿入の「ダイアログあり」はオフ
- 1で設定した変数を含めた情報を「cURLのオプションを指定」を使って送信
変数を設定
それでは、変数を設定しましょう。変数の名前は仮で「$data」とし、値は「JSONSetElement」関数を使って指定します。ここでJSONオブジェクト名(キー)を指定するのですが、通知したいグループチャットのチャンネルIDと内容をキーに指定します。
式は以下通りです。
Let (
json = JSONSetElement (
"{}" ;
"channelid" ;
"チャンネルIDを入力" ;
JSONString
) ;
JSONSetElement (
json ;
"text" ;
"下記が内容だ!\nこれはテストですよー" ;
JSONString
)
)
※¥はバックスラッシュです。
“channelid”と”text”がそれぞれJSONキーで、続くのがキーの値(「希望のチャンネルID」や「下記が内容だ!\n & cURL::内容」の部分)、そして、”JSONString”というのは値の種類で、値が文字列であることを表します。”text”の値にある「\n」は改行を意味します。仮に内容フィールドが「テスト」とすると、スクリプトから返る”text”は下記になります。
“下記が内容だ!”
“テスト”
URLから挿入
次に実行される「URLから挿入」スクリプトの設定を行います。準備したグローバルフィールドをターゲットフィールドに指定します。
「URLを指定」にはMake(旧integromat)で生成するURLを指定しますが、今は空欄のままで大丈夫です。続いて「cURLオプションの指定」に以下を追加します。
"--request POST -S" &
" --header \"content-type: application/json \"" &
" --data @$data"
※¥はバックスラッシュです。
よくあるエラーの原因
$dataに入る値は任意に変更できますが、その時に注意が必要なのが改行です。例えばフィールドの情報に改行がある場合、FileMakerで改行を表す「¶」を、必ず「\n」へ変換しなければいけません。この変換が不完全だと、Makeでデータの内容を正常に認識できなくなり、思うような結果がでなくなります。
また、「cURLオプション」の構文が間違っているときもエラーの原因になります。cURLオプションに記述するcurlコマンドによって、送られるデータの形式などを指定しているのですが、これが間違っていると、LINE WORKSでデータを正常に認識してくれなくなります。
FileMakerでcurlコマンドを指定する場合、システム上の都合もあり、独特な記述をしなければいけないので要注意です。詳しいことは、私も参考にしたサイト「【FileMaker】curl ググって解決しづらかったこと」で、詳しく解説してくれているので、気になる方はぜひご一読ください。
第3弾では、Make(旧integromat)の設定と通知の実行までを解説します。
次回の記事もお楽しみに⋯。
参考サイト
JSONの記述方法やスクリプトの組み方など、下記の記事やChatGPTを参考にしています。実践的な内容ですので、読みながら自身でも試してみると良いでしょう。
「JSON」とは?非エンジニアでもよくわかる解説
https://cloudapi.kddi-web.com/magazine/json-javascript-object-notation
【FileMaker】curl ググって解決しづらかったこと
https://qiita.com/tyuma/items/7f0c161509f3c5c78257
cURL と REST API を使用し、FileMaker アプリ内で配送状況を追跡
https://blog.tpc.jp/2017/06/tracking-shipping-in-filemaker-using-curl-and-restapi.html