Cybozu developer networkのTipsのURL:
https://developer.cybozu.io/hc/ja/articles/212208463
kintoneのレコード保存後イベントでレコードを更新するカスタマイズをご紹介します!
レコード新規追加時、レコード保存する前はまだレコード番号や作成者、作成日時などの情報がありません。でも、それらの情報を他のフィールドに入れたいときってありますよね?
でも、一回保存してからもう一度編集するなんて面倒…。
Customineなら簡単に解消できます!
今回はレコード保存後イベントでレコードを更新する一例として、レコード保存直後にレコード番号を使って固有のIDを作成し、レコードに自動入力するカスタマイズをしてみましょう!
Customineの基本的な事柄は、こちらの「はじめてのカスタマイズ」をご参照ください。
アプリのフォーム
アプリストアから「交通費申請」アプリを追加し、下記のフィールドを追加します。
申請No:文字列(1行)フィールド
また、フィールドコードはフィールド名と同じになるように変更しておきましょう。
(カスタマイズ時にどのフィールドか判別しやすくするため)
やりたいこと
レコード保存直後に、「申請No」に「交通[作成日時]-[レコード番号]」が入るようにレコードを更新する。
Customineの設定
レコード保存直後にレコードを更新する
すぐにレコードを更新したいところですがその前に、作成日時を”YYYYMMDD”の形式で入力したいので、その準備としてまずは「日付や時刻をフォーマットする」を使って現在の日時を指定の形式に変換します。
そのあとに続けてレコード更新を行う、という流れです。
現在の日付の取得・変換
「日付や時刻をフォーマットする」を使って、現在の日時を表す関数「now()」を「20180125」のような形に変換します。
条件は「レコードを保存した直後(削除後は除く)」を使います。
新規にレコードを作成したときのみ実行したいので、「フィールド値が特定の値ならば」を追加し、「申請No」が空の時に限定しましょう。
レコードの更新
「レコードを更新する(キーの値をフィールドで指定)」を使います。
更新する対象のレコードは、現在見ているレコード自身、つまり現在見ているレコード番号と同じレコード番号を持つレコードを指定します。
更新する対象のフィールドは「更新No」、値は「=”交通” & $(日付フォーマットのアクション番号) & “-” & レコード番号」と入力します。$(日付フォーマットのアクション番号)は日付フォーマットで変換された後の日付が代入されます。
条件に「他のアクションの実行が完了した時」を使うことで日付フォーマットに連続して実行するようにします。
編集不可設定
自動で入力される部分は手入力で編集する必要がありません。特に自動採番する部分などは変更してはいけないので、誤って変更してしまわないように、編集不可にしてしまうのが望ましいでしょう。
やることは「フィールドを無効化する」を選択し、条件には「追加・編集画面を表示した時」を選択します。
一覧画面でも編集できないように、「一覧画面の鉛筆を押した時も含める」にしておきましょう。
レコード再利用時クリア設定
レコード再利用時にはコピー元の「申請No」もコピーされてしまいます。
これでは保存時に「申請No」が新しいものにならず、作成日時もレコード番号も整合性が取れなくなってしまいます。
そこで、レコード再利用時に「申請No」をクリアするアクションを加えましょう。
やることは「フィールド値をクリアする」を選択し、条件には「再利用モードで追加画面を表示した時」を選択します。
上のように設定が完了したら、「kintoneアプリへ登録」し、動作を確認してみましょう!
テスト
設定が完了したら、「kintoneアプリへ登録」し、動作チェックしてみましょう。
レコード更新
保存すると「申請No」に値が自動で入るようになっています。
レコード追加、編集画面
「申請No」が編集不可になっています。レコード再利用時は自動でクリアされるようになっています。
終わりに
今回は、レコード保存直後にそのレコードを更新することで、保存成功時に追加される情報を別のフィールドに利用するテクニックをご紹介しました。
今回使用したレコード更新アクションは、別のレコードや別のアプリを更新することもでき、複数のレコードを一気に更新することもできます!夢が広がりますね!!
カスタマイズ次第では複雑な機能でもCustomineで簡単に実現できたりします!
色々設定してどんどん便利なアプリにしてくださいね!
Customineヘルプやサポートもぜひご活用ください。