Honeycodeでデータ更新&Slackへの通知を行ってみた

2020.12.31

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

前回は、SlackのメッセージをHoneycodeで受信し、データを作成しました。

今回は以下を行ってみます。

  • 受信したデータの自動更新
  • 画面操作による手動更新
  • Slackへの更新通知

はじめに

Amazon Honeycodeは現在ベータ版です。
バージョンアップ時、正式リリース時には変わっている可能性がありますのでご注意ください。

受信したデータの自動更新

オートメーションを使って、データのInsert発生時に特定フィールドの更新を行いたいと思います。
Requestsテーブルにレコードが作成された時に、Statusフィールドを初期値"None"を設定してみます。

左のメニューからAutomationsにて新規作成を選択します。

上記設定で、「Requestsテーブルに行が追加されたとき」というトリガーになります。

続いてアクションを設定します。

上記設定は、「対象行のStatusフィールドを"None"という値で更新する」というアクションになります。

ここの各項目は式が使えます。
関連テーブルの更新の場合はSimple Todoテンプレートでも使われているように、FindRow関数などを使うと良いでしょう。

Honeycode関数リファレンスは以下です。

さて、オートメーションが作成できたら、右上のPublishを押してください。
Publishするまではdraft状態で残ります。

Publish出来たら、Slackからメッセージを送信し、動作確認してみます。

1分周期のAppFlowで自動受信されるはずです。

データが受信出来ました。
StatusもNoneに自動更新されていますね。

画面操作による手動更新

ここまでで、SlackからステータスNoneのデータを蓄える仕組みが出来ました。
UIを作成し、データの表示と操作による更新を行ってみます。

まずはアプリを新規作成しましょう。
少し慣れてきたので今回はスクラッチでの作成で進めてみます。

アプリの構想としては以下で進めてみようと思います。

  • ステータスNoneのデータをリスト表示する画面がある
  • リストをタップすると詳細画面に遷移する
  • 詳細画面でApproveかRejectを選択できる。選択するとステータスを更新し、リスト画面に戻る

ステータスNoneのデータのみリスト表示&詳細画面への遷移

"Add objects"を選択し、"Column list"を追加します。
"Insert column list"ダイアログにて情報を入力してください。

リストのデータソースを"Requests"、表示対象フィールドは"Content"を選択します。
そして "Add a detail screen"をチェックしましょう。
詳細画面が作成され、ナビゲーションも自動設定されます。(便利!)

これでRequestsテーブルをリスト表示する画面が作成出来ました。

次に、ステータスNoneのみを表示するよう修正したいと思います。
作成したリストの"Set source"プロパティでフィルタリングを行います。
以下を入力してください。

=Filter(Requests,"Requests[Status] = ""None""")

これで、ステータスがNoneのレコードのみを表示対象とすることが出来ました。

次に、詳細画面で更新処理を作成します。
自動生成された詳細画面を開いてください。

詳細情報の表示画面が自動生成されていると思います。
少し設定内容を見てみましょう。

リストには、ソースとして =$[InputRow]が設定されています。

InputRowについては下記を参照してください。

リスト内のセルでは表示対象のフィールドが指定されています。

更新ボタンを配置します。
"Add objects" からボタンを2つ追加しましょう。

配置されたボタンをダブルクリックし、それぞれ Approve と Reject と入力しておきます。

ここから更新処理を設定していきます。
Approveボタンのプロパティで"ACTIONS"タブを開きます。
開いたら、"Create an automation"を選択してください。

"Add actions"でボタンクリック時のアクションを追加します。
今回はデータ更新を行いたいので、"Overwrite"を選択します。

更新内容を設定します。
先程詳細画面で使われていた、$[InputRow]を使ってみましょう。

詳細画面の対象レコードのステータスフィールドを Approve という値で更新するよう指定してみました。

アクションを追加して、データ更新後にリスト画面(前画面)に戻るように設定しておきましょう。

Rejectボタンも同様に設定しておきます。

動作確認してみます。

222を承認、444を却下してみます。

222が表示されなくなりました。
リアクティブな感じがとても良いですね。

444の却下操作をしたあと、テーブルを確認してみます。

ステータスが更新されていますね。

Slackへの更新通知

最後に、更新時にSlackへ通知を行います。

ボタンのActionにWebhookがあるので、SlackのIncoming Webhookを利用したいと思います。
Slack側の仕様は以下を参考にしました。

まずはActionを追加します。

Webhook情報を入力します。
textキーに値を設定するとメッセージとして扱われるようです。

設定したので試してみます。
Noneのレコードを承認してみましょう。

通知されました。

さいごに

今回はHoneycode内部のデータの更新と、外部への送信を行いました。
受信についてはAppFlowのコネクタに依存しているため、AppFlowの連携先がどれだけ充実するかでHoneycodeの可能性も広がりそうだなと感じました。

一方、送信についてはWebhookが使えるので汎用的に使えそうです。

また、画面の更新はデータに反応して即更新されます。
コントロールオブジェクトの表示・非表示は式が使えるので、データに応じた動的なレイアウトの作成も出来そうですね。