ほっぷ、すてっぷ、フィールドに値をセットする

公開日:

更新日:

注意

本記事は情報提供を目的としており、本記事の内容は無保証、サポートの対象外です。
サポート窓口、問合せ窓口にご質問をいただいても対応いたしかねますのでご了承ください。

はじめに

こんにちは、簡単なカスタマイズから始めて、最後はどこに辿り着くか分からないという「ほっぷ、 すてっぷシリーズ」です。今回は「フィールドに値をセットする」というフィールドに値をセットするというカスタマイズを取り上げたいと思います。

申し遅れました。サポートの沖です。

まとめてみたら予想以上のボリュームになったので早速始めます!

画面を表示した時

追加画面を表示した時にセット

追加画面の場合はフィールドの初期値を設定しましょう。ほとんどの場合は「フィールドに値をセットする」の出番はないと思います。

再利用画面を表示した時にセット

再利用画面は追加画面のような感じで、キャンセルボタンを押すとレコードは作成されません。しかし、追加画面とはフィールド値の動きが異なります。

例えば、日付フィールドの初期値が「レコード登録時の日付を初期値にする」の場合、追加画面の場合は当日の日付がセットされます。しかし再利用画面の場合は元のレコードの日付の値なので、当日にはなりません。この場合は以下のように「再利用モードで追加画面を表示した時」をお使いください。

編集画面を表示した時にセット

「条件」は「編集画面を表示した時」です。

レコードを編集毎にフィールド値を更新するような動きです。更新日時のような感じですね。

一覧画面のインライン編集を開始した時にセット

「一覧画面の鉛筆を押した時」で「一覧画面の鉛筆を押した時も含める」を設定すると出来そうですが、実は出来ません。これはkintoneの仕様です。一覧画面のインライン編集を開始した時にできるのはフィールドの編集可と不可くらいのようです。

https://cybozu.dev/ja/id/8d1bc2d35a1aaa39cf7d2d85/#available-event-object-actions

「アクション」は設定できて、コンソールログを見てもエラーになっていないので間違えがちです。ご注意ください。

レコードを保存する直前にセット

「条件」は「レコードを保存する直前(削除時は除く)」になります。「レコードを保存・削除する直前」でもほぼ同一で、レコード削除時が該当するかどうかが変わります。

画面表示時ではなく保存時にセットする動きなので日付の場合は変わりはないと思いますが、日時の場合は画面表示時とは少しズレがあると思います。そのような場合には今回の「条件」になります。

レコードを保存した直後にセット

kintoneの仕様で出来ません。こちらに記載のように保存した後は「レコード一覧画面に遷移する」のような遷移するだったり「レコードを更新する(キーの値をフィールドで指定)」などのレコード更新する「やること」を使うことが多いですね。

https://cybozu.dev/ja/id/073cb99467614b140b2a9c42/#record-edit-events

カスタマイン的には内部的なデータとしてはセットできるのですが、その結果はレコードに反映されません。ただ、コンソールログを見るとアクションは実行されているため、セットされないと悩むケースがよくあります。ご注意ください。

なお、何らかの理由で保存した直後でフィールド値をセットしないといけない場合は「レコードを更新する(キーの値をフィールドで指定)」で可能です。「全角から半角へ変換する」のようなフィールドに対して実行する「やること」の後に、マッピングでフィールドを指定することで変換後の値をセットできます。

印刷画面を表示した時にセット

この画面でもkintoneの仕様としてセット出来ません。

https://cybozu.dev/ja/id/3bc9fd50e0df52db2617ae3c/#available-event-object-actions

でも、そもそも印刷画面の時の「条件」がないのでは? と思った方は鋭い!
実は「kintoneイベントが発生した時」という「条件」があり、そこで選択可能です。

このダイアログのみで選択できるイベントがあるのと、複数のイベントを選択できるので、うまく利用してください。

ただ、ここで印刷を選択してもフィールド値は変わらないんですけどね(^^;;

テーブル行を操作した時

テーブルに行を追加した時にセット

「条件」は「テーブルに行を追加した時」です。この「条件」だと追加した行のフィールドだけにセットできます。

なお、以下の様に「アクション」をつなげた場合は全行が対象になります。この動きはカスタマインの仕様なのでご注意ください。詳細は以下を参照で。

テーブル行特定のルール

テーブル内フィールドに対して実行する「やること」がある場合、「条件」や「追加条件」によって対象となる行が変わり(決まり)ます。「フィールドの値を編集して値が変わった時」だと値が変わった行だけになり、「他のアクションの実行が完了した時」だと全行になります。

以下の様に「アクション」を繋げた場合は24番は値を変えた行で、25番は全行に対して実行ですのでご注意ください。

25番の場合で行を特定したい場合は、以下のような「追加条件」を追加して値で行を特定します。

テーブル行コピーボタンを押した時にセット

「条件」は「テーブル行コピーボタンで行をコピーした時」です。行コピーボタンは「テーブルに行コピーボタンを追加する」で追加してください。

例えば、以下の様なテーブルで1行目でコピーした場合、数量は300がコピーされますが、1で上書きされます。この時はコピーした行だけが対象になります。なお、コピー時にルックアップがあると自動取得も可能なので、「テーブルに行コピーボタンを追加する」の設定時にはご注意ください。

この画像だと、1行目をコピーして2行目が作成された後に、ルックアップの再取得で単価が500に変わり、数量が1に上書きされています。そう、単価はルックアップで取得する他フィールドですが、編集不可のフィールドに対しても値のセットは可能なのです。

フィールド権限で編集できない場合と、計算フィールドや文字列の自動計算のように変更出来ないフィールドタイプとは違う動きなので、見た目に惑わされない様にしましょう。

kintoneでは編集できない画面の時

詳細画面を表示した時にセット

「条件」は「詳細画面を表示した時」です。しかし、kintoneの仕様では以下のページのようにフィールド値の変更はできません。

https://cybozu.dev/ja/id/12aad5aeaa4c1b4f3ff384b8/#available-event-object-actions

実は、カスタマインではフィールド値を変更できない画面でも自動的にレコード更新をすることで変更を実現しています。設定例は以下のページをご確認ください。

詳細画面でフィールドに値をセットできますか?

このページで記載のように、セット後は自動でリロードすることで表示しているフィールド値も最新になります。ただ、複数のフィールドに値をセットしていたりするとレコード更新のタイミングがズレる事があるので、その場合は「レコードを更新する(キーの値をフィールドで指定)」を使うようにしてください。

一覧画面を表示した時にセット

「条件」は「一覧画面を表示した時」です。この画面でもkintoneの仕様でフィールド値の変更はできません。

https://cybozu.dev/ja/id/a7cfce771ab828cfb4d654cf/#available-event-object-actions

この画面でも詳細画面のようにカスタマインが自動更新するので、以下の様な設定も可能です。ただ、同様にレコードを更新なので見た目に反映させるにはリロードが必要になります。

この時の更新先レコードは表示されているレコード全てが対象になります。画面に20レコード表示している場合は20レコードのように表示されているレコードで、一覧画面の条件に一致する全てのレコードではありません。動作確認時に一部だけが変わるような結果だったら、この動きが理由ということがよくあります。

画面表示後にユーザーが何か操作した時

フィールドの値を編集した時にセット

「条件」は「フィールドの値を編集して値が変わった時」です。以下の設定だと、日時の値が変わったら日付部分だけを日付フィールドにセットします。

シンプルにフィールドAの値を変えると、フィールドBの値にセットする様な動きです。変わった値によってセットする値を変える様な場合は「フィールド値が特定の値ならば」で判定して分岐する様な設定もあります。

計算フィールドの値が変わった時にセット

「条件」は「計算フィールドの値が変わった時」です。以下の設定は、計算フィールドで日付を計算した結果にAM9:00を追加して日時フィールドにセットします。

実は、kintoneの仕様では計算フィールドはフィールド値が変わった時では指定が出来ません。カスタマインは独自機能で計算フィールドの変化をチェックしていますので、数値フィールドを変更後に計算フィールドの値が変わったタイミングを「条件」に指定することができます。

フィールドの値を編集して値が変わった時」で計算フィールドの値を利用すると1回前の値しか取得できない、とお悩みの場合はこちらの「条件」をお使いください。

ボタンを押した時にセット

「条件」は「ボタンを押した時」です。以下の設定は、追加画面や編集画面に配置したボタンを押すと、日付フィールドに当日の値をセットします。

ボタンは色々な画面で配置可能です。作成したいカスタマイズに合わせて設定してください。

ルックアップの取得が成功した時/失敗した時にセット

「条件」は「ルックアップで取得が成功した時」や「ルックアップで取得が失敗した時」を使います。例えば、ルックアップの取得が成功すると数量に1をセットして、失敗すると空欄にするような動きを考えます。

設定はこうなります。

フィールド値をクリアする」でフィールド値をクリアすることが多いと思いますが、空欄をセットでも同じ結果になります。後述の「フィールド値をまとめてセットする」でクリアする場合に使用できますので、覚えておくと便利です。

プルダウンの選択を変更した時にセット

「条件」は「プルダウンの選択を変更した時」です。以下の設定だと、プルダウンで選択した値をフィールドにセットします。

アプリで設定出来るドロップダウンフィールドの場合は「フィールドの値を編集して値が変わった時」で対応可能ですが、「プルダウンをスペースに配置する」などで作成したり配布したものは「アクション」の結果なので対象外です。それらの値が変わる場合にお使いください。
選択した結果をフィールドにセットした後に、「アクション」を繋げて色々な処理を作成可能です。

プロセス管理のアクションを実行した時にセット

「条件」は「プロセス管理のアクションを実行した時」です。以下の設定だと、プロセス管理のアクションを実行時に、その日時をフィールドにセットします。

実はkintoneの仕様ではプロセス管理のアクション実行時にフィールド値を変更可能です。ただ、ルックアップなど変更できないフィールドもあるので、詳細はこちらをご確認ください。

https://cybozu.dev/ja/id/073cb99467614b140b2a9c42/#record-details-overwrite-field-values

なお、テーブルに関してもセット可能ですが、テーブルはそれだけで1つのブログになるくらいの量なので、「ほっぷ、すてっぷ、テーブルやばい(仮)」をお待ちください。

複数フィールドに一度に値をセット

セットではなくまとめてセットの場合は、一度に複数フィールドにセットできるのでアクションを減らすことが可能です。ただ、使用できる画面に制限があります。また、セット先フィールドも制限があります。

フィールド値をまとめてセットする」のドキュメントに制限事項やkrewSheet対応状況が記載されていますので、詳細はそちらをご確認ください。

値に指定できる対象はかなり自由です

今回の設定例だと固定値やフィールド指定でしたが、値に指定できるのは式なのでアクションの結果なども指定可能です。また、「フィールドに値をセットする」の様な動きをする「やること」は他にもいろいろとあります。

など、いろいろとお試しください。

まとめ

いつか書きたいと思っていたので書き始めたのですが、想定外にパターンが多すぎでした。。。まだ見落としがある様な気もしますが、何かあったら続編を書きたいと思います。

この後に、「テーブル」や「検索」とか色々とありそうな気もするので、そのうちにー

投稿者プロフィール

アバター画像
"サイボウズ公認kintoneエバンジェリスト
カスタマインやデプロイットでも色々とやってます"