カテゴリー内の他の記事

レコード追加時にテーブルへ初期値を入れる!

フォローする

(著者:サイボウズ 酒井 康晴)

はじめに

こんにちは、kintone開発チームの酒井です。

今回は、kintoneの7月版より可能になった、JavaScriptカスタマイズでテーブルの初期値を設定する方法について紹介したいと思います。
詳細は以下のお知らせ及び kintone API ドキュメントにてご確認ください。

2014/07/13 の定期メンテナンスにおけるアップデート情報

対象となるイベント

従来テーブルの行追加/削除は、app.record.create.submitやapp.record.edit.submitというsubmit系のイベントでしか実行できませんでした。
今回の機能追加により、以下のイベントでもテーブルの行追加/削除が実行できるようになりました。

つまり、app.record.create.showのイベントでテーブルの値を入れることができれば、レコード追加時に初期値を設定することができるというわけです。

サンプルアプリ

サンプルアプリは以下のようにフィールドを配置して、テーブル化しましょう。テーブルのフィールドコードは「Table」にしています。

フィールドタイプ フィールド名 フィールドコード
数値 Number Number
文字列(1行) Tips Tips

 

サンプルプログラム

このアプリに、以下のサンプルプログラムを読み込ませます。

実行結果

では、レコードを追加してみましょう。

このように、レコード追加時にテーブルへ値を入れることが出来ました!
めでたし、めでたし!

他にも…

今回はapp.record.create.showイベントでしたが、app.record.edit.showイベントやchange系イベントにも対応しています。
ですので、編集ボタンを開いたらテーブルの行を追加/削除したり、ラジオボタンの変化で行を追加/削除したりもできます。

このTipsが、皆様の参考になりましたら幸いでございます。

記事に関するフィードバック

直接的に記事と関連がないご質問はcybozu developer コミュニティをご活用ください。

Avatar
田中

一覧画面が表示された時に、このような動きをさせる方法はございますでしょうか?

Avatar
k_soda

フィールドタイプがルックアップの場合、

①上記サンプルで参照文字をセットした後に

②「参照の実行」も併せて

したい場合、どうやって記述すればいのか教えて欲しい

Avatar
cybozu Development team

k_soda様

現在開いてるレコードに値をセット自動ルックアップの関数を使うといいかと思います。

「自動ルックアップで名入れレコードを作る」の記事が参考になるかと思います。ご確認ください。

https://cybozudev.zendesk.com/hc/ja/articles/211429603

Avatar
k_soda

早々のコメントありがとうございます。

lookuプロパティで指定できるのですね。

createValue_関数内で以下のように追記したらばできました。

<ルックアップフィールド>: {
 'type': 'SINGLE_LINE_TEXT',
 'value': 'テスト',
 'lookup':true
}

Avatar
t_honda

テーブル内のフィールドタイプがチェックボックスの場合、エラーが発生していまいます。

テーブル内のフィールドタイプがチェックボックスの場合はどの様に記述すればよいか教えて頂けますでしょうか。

Avatar
cybozu Development team

t_honda 様

フィールド形式 の「チェックボックス」に書かれている通り、
チェックボックスは複数選択可能なため配列形式で値を持ちます。

下の例のように、[ ] をつけてvalueをご指定下さい。

"<フィールドコード>": {
"type": "CHECK_BOX",
"value": [
"選択肢1",
"選択肢2"
]
}
Avatar
t_honda

cybozu Development team 様

早速のご回答ありがとうございます。

しかしながら、フィールドコードがチェックボックスの部分を以下の様に配列形式で記述したのですがエラーが出てしまいます。

createValueで指定した書式が太字+斜体で記述した部分が配列形式でなく問題があるかと思いますが、いろいろ試したのですが

対策が分かりません。

プログラミング初心者のため、初歩的な部分が分かっていなくて申し訳ございませんがご教授お願い致します。

 

 

以下、コード

ーーーーーーーーーーーーーーーーー

(function() {
'use strict';

   kintone.events.on('app.record.create.show', function(event) {
        // 行の作成
       var newRow1 = createValue_('1', 'テーブルは、行を追加/削除することができます','1','');
       var newRow2 = createValue_('2', 'javascriptカスタマイズでも出来るようになりました','','1');

       // Tableに初期値を定義する
      event.record.Table.value = [
          newRow1,
          newRow2
          ];
         return event;
       });

       function createValue_(number, text, textA, textB) {
           return {
              'value': {
                    'Number': {
                                      'type': 'NUMBER',
                                      'value': number
                                    },
                      'Tips': {
                                      'type': 'SINGLE_LINE_TEXT',
                                      'value': text
                                 },
                      'Check_box': {
                                      'type': 'CHECK_BOX',
                                      'value': [
                                                    textA,
                                                    textB
                                                  ]
                                            }
                                 }
                          };
                    }
})();

Avatar
cybozu Development team

t_honda 様

チェックボックスの選択肢として「A」と「B」が設定されていますが、
コードでは「1」をチェックボックスにセットしようとしていますね。
選択肢として選べない値をセットしようとしているため、「不正です」というエラーが出ています。

createValue_ にチェックボックス用の値を渡す際は、引数一つにまとめて、
下記のような形で指定するのがする方が良いのではと思います。

 // 行の作成
var newRow1 = createValue_('1', 'テーブルは、行を追加/削除することができます',['A']);
var newRow2 = createValue_('2', 'javascriptカスタマイズでも出来るようになりました',['A','B']);


また、こちらは記事のフィードバックを頂く場所となっていますので、
コードの書き方のご質問につきましては、ぜひコミュニティ(初心者向けフォーラム等)をご活用頂けますと幸いです。

ログインしてコメントを残してください。