はじめに
こんにちは!サイボウズ Developer Pioneer チームです。
先日、【kintone×Make×LINE】身近な人の誕生日を自動で知らせるLINE Botを作成 - kintoneGeeks blog の記事で、kintoneとMakeで簡単にLINEBotを作成する手順と「kintoneのデータを1件だけ返信する」シナリオを紹介しました。
この記事では、前回のカスタマイズでは手が届かなかった課題の解消や、躓きやすいポイントのTipsをご紹介します。
kintoneで取得した複数のデータをLINEで返信したい!
課題1:1件のデータしかLINEで返信できない
前回のカスタマイズでは「kintoneのデータを1件だけ返信する」ことには成功しますが、kintone側に同じ日付の誕生日データがある場合は最初の1件しかデータを返信することができません。
動作検証実行後に、LINEの「Send a Reply Message」モジュールの右上に注意マーク(⚠️)が表示されています。このマークをクリックするとエラー内容を確認できます。
エラーの内容は、「[400] Invalid reply token」です。 「使用済みのLINEのReply Tokenを使って応答メッセージを送ろうとしたため、2つ目のメッセージが送信できませんでした」といったエラーであることがわかります。
参考資料:エラーメッセージ Invalid reply token
しかし、Reply TokenはLINEのWatch Eventsから得られる値であり、1つしか取得することができません。そのため、kintoneの複数データを返信する際は、返信メッセージをまとめてから、1つのメッセージで返信する必要があります。
解決策:返信メッセージをまとめる
kintoneのレコード操作の「Search Records」モジュールで、複数のレコード結果を取得した際は、Makeで用意されたモジュールを使用して、取得したデータを加工する必要があります。複数のデータをまとめる際に登場するのが、「Text aggregator」モジュールです。
Text aggregator モジュールとは?
Aggregators Aggregator is a type of module that accumulates multiple bundles into one single bundle.
Aggregatorsモジュールは、複数のデータを1つにまとめてくれる特徴を持つモジュールです。 その中でもText aggregatorモジュールは、複数のデータ(配列や複数Bundle)を1つの文字列に変換してくれるモジュールです。
全体像
kintoneとLINEモジュールの間に、ToolsのText aggregator モジュールを設定します。
設定項目
アドバンス設定を表示すると、細かい設定が可能です。
項目 | 設定する値 | メモ |
---|---|---|
Source Module | kintoneで取得した複数レコード | |
Row separator | New row | この設定をすると、 1行ずつまとめてくれる |
text | Source Moduleから取得したい項目 |
返信メッセージを修正する
Text aggregator モジュールでまとめた文字列を、LINEの返信メッセージに設定します。
動作確認
kintoneで複数取得したデータをText aggregator モジュールを使って1つの文字列に変換し、LINEのSend a ReplyMessageモジュールに渡すことで、複数データをLINEで送信することができました。
覚えておくと便利な2種類のモジュール
そもそもモジュールとは?
一般的にモジュールとは部品を意味します。 またIT用語のモジュールとは、まとまった機能を持つパッケージのことです。 (主にプログラミングでは、まとまった機能を持つコードのことを指します)
Makeで使用できるモジュールは5種類に分類できます。
Types of modules Integromat distinguishes five types of modules: Actions, Searches, Triggers, Aggregators and Iterators . The two latter ones are intended for advanced scenarios.
その中でも、特に重要な2つのモジュールを紹介します。
モジュール | 説明 |
---|---|
Aggregator | 1つのデータ(Bundle)から複数のデータ(配列、複数Bundleなど)に 変換するモジュール |
Iterator | 複数のデータ(配列や複数Bundle)から 1つのデータ(Bundle)に変換するモジュール |
先程紹介したAggregatorの対になるのがIteratorです。
kintoneの取得データ順を変更したい!
課題2:kintoneデータを降順でしか取得できない
kintoneの Search Records モジュールの結果は、デフォルトで降順になっています。
しかし、kintoneで取得した値を、昇順に変更したい時がありますよね。
そんな時は、Query 部分に続けて order by
を記載すると順序の入れ替えが可能です。
解決策:順序を並び替えるQueryを設定しよう
設定方法
kintoneモジュールのQuery部分に、
日付 = YESTERDAY() order by レコード番号 asc
のように、順序を並べ替えるクエリを追記します。
これで昇順でデータを取得することができます!
- 昇順(asc): 1,2,3,..n
- 降順(desc): n,...,3,2,1
動作確認
昇順に並べ替えることが出来ました。
Make公式ドキュメント
- Make:https://www.make.com/en/help/home
- Integromat(旧v):https://www.integromat.com/en/help/docs#functions
おわりに
いかがでしたか。今回は、ちょっとしたMake連携のTipsをご紹介しました。 今回のTipsは気が付くと簡単に設定できるものが多かったのですが、公式ドキュメントにも明記されていない部分があり地味に分かりにくい部分がありました。この記事が少しでも参考になれば嬉しいです。