初歩的な質問で失礼いたします。
ルックアップに初期値を入れたいと思っています。
ルックアップの初期値設定という投稿を見てみましたが少しやりたいことが
違うような気もしましたので投稿させていただきました。
ルックアップ元には
作業内容として
オーバーホール、パッキン交換などのメニューがあり、
それを添付画像のようにルックアップ取得先で取得するようにしています。
あらかじめよく使う
オーバーホール、パッキンなどは
入れておきたいのですが、初期値として入れておくことは
javascriptのカスタマイズでできるものでしょうか?
大変恐れりますが、お教えいただけますと幸いです。
以下の様なコードになると思います。
切り貼りしただけなので、動作確認などは開発者ツールを見ながらお願いします。
「作業内容」や「テーブル」などのフィールドコードの部分はアプリ側と合わせるようにしてください。
テーブルの列が増えた場合の指定するフィールドタイプについては、 こちら を参考にしてください。
一部コメントアウトしている部分の「required」は、必須項目のフィールドコードを指定してからコメントアウトを外すと
レコードの再利用時に行が増えてしまうのを防ぐことが出来ます。
(レコード新規登録画面表示時のイベントapp.record.create.showは再利用時でも発火するので)
(function() {
"use strict";
var tableRow = { // テーブル内のフィールドコード及びフィールドタイプ
value: {
作業内容: {
type: 'SINGLE_LINE_TEXT',
value:''
},
単価: {
type: 'NUMBER',
value:''
},
備考: {
type: 'SINGLE_LINE_TEXT',
value:''
}
}
};
var category = ['オ-バーホール', 'パッキン交換']; // 初期表示させたいルックアップ元の値
kintone.events.on(['app.record.create.show', 'mobile.app.record.create.show'], function(event) {
var record = event.record;
// レコ-ドの再利用時も行が加されてしまうので、必須項目の値が入っていない時は処理をしないようにする
//if(typeof record.required.value === 'undefined'){
for(var i = 1; i < category.length; i++){
record.テーブル.value.push(tableRow);
}
for(var j = 0; j < category.length; j++){
record.テーブル.value[j].value.作業内容.value = category[j];
}
//}
return event;
});
})();
下記のようにやってみたのですが
何の反応もありません。
どこがおかしいかわかりますでしょうか?
(function() {
“use strict”;
var tableRow = { // テーブル内のフィールドコード及びフィールドタイプ
value: {
ルックアップ_7: {
type: ‘SINGLE_LINE_TEXT’,
value:‘’
},
単価_0: {
type: ‘NUMBER’,
value:‘’
},
文字列__1行__2: {
type: ‘SINGLE_LINE_TEXT’,
value:‘’
}
}
};
var category = [‘オ-バーホール’]; // 初期表示させたいルックアップ元の値
kintone.events.on([‘app.record.create.show’, ‘mobile.app.record.create.show’], function(event) {
var record = event.record;
// レコ-ドの再利用時も行が加されてしまうので、必須項目の値が入っていない時は処理をしないようにする
//if(typeof record.required.value === ‘undefined’){
for(var i = 1; i < category.length; i++){
record.Table_2.value.push(tableRow);
}
for(var j = 0; j < category.length; j++){
record.Table_2.value[j].value.ルックアップ_7.value = category[j];
}
//}
return event;
});
})();
似たようなアプリとコードで試しましたが、こちらではテーブルに初期値が表示されました。
javascriptの記述ミスでは無さそうです。
1.以下のフィールドコードはアプリ側と一致していますでしょうか?
ルックアップ_7、単価_0、文字列__1行__2、Table_2
2.既存レコードの編集画面を開いていませんか?
上記コードは○○.create.showのイベントなので、新規登録画面でしか動きません。
3.開発者ツール(IE、Chromeの場合F12のキーを押すと表示されます)でエラーは表示されていませんでしょうか?
4.ルックアップ元のアプリではなく、ルックアップ利用先のアプリに適用していますでしょうか?
jsの日本語部分が文字化けしているので、jsファイルの文字コードがUTF-8以外で保存されているようです。
こちら など参考にして頂いて、UTF-8の形式で保存してからkintoneに適用してみてください。
動いたようで良かったです。
上記コードの補足ですが、ルックアップの項目に値は入りますが取得ボタンは押さないといけない状態ですので、
record.Table_2.value[j].value.ルックアップ_7.value = category[j]; の直下に
record.Table_2.value[j].value.ルックアップ_7.lookup = true; を足して頂くと自動的に取得もされるようになります。
参考までに。
お世話になります。先日はおおしえいただきありがとうございました。
こちらの応用かなと思うのですが
ルックアップフィールドに
何かしら値が入っていれば取得を自動で押すJavaScriptを当てたいのですが
developerページで下記が出てきまして、こちらでやったのですが
動作が全然反映されないので困っております。
何か間違いはあるのでしょうか?
もしくは
お分かりになれば是非お教えいただけますと幸いです。
api連携させてルックアップフィールドに値が何かしら入ってくるのですが
それをレコードを開いたときには取得になっているという状態を目指したいです。
サンプルのものを使うと
0001
という値が入ったら取得?という意味なのでしょうか?
それともこの数値は何かしら値が入ったら
というニュアンスでしょうか?
よろしくお願いいたします。
| | kintone.events.on(‘app.record.edit.show’, function(event) { |
| | var record = event.record; |
| | record[‘ルックアップ_5,ルックアップ_3,ルックアップ_0’][‘value’] = ‘0001’; // ルックアップフィールドの値 |
| | record[‘ルックアップ_5,ルックアップ_3,ルックアップ_0’][‘lookup’] = true; // または record[‘ルックアップ’][‘lookup’] = ‘UPDATE’; |
| | return event; |
| | }); |
すみません。できました。
record[‘ルックアップ_5,ルックアップ_3,ルックアップ_0’][‘value’] = ‘0001’; // ルックアップフィールドの値
の列がいらないだけですね。
失礼いたしました。
お世話になります。
先日お教えいただいたルックアップの初期値自動入力と自動取得ですが
オーバーホール
を初期値入力し自動取得出来ていたのですが
あらたに外部オーバーホール
というメニューがルックアップ元に入ったことで
オーバーホール
が自動入力エラーになってしまいました。
候補があるためですが、
これは絞り込むことは不可能でしょうか?
すみませんがお分かりになるようでしたら
教えていただけると大変助かります。
何卒、よろしくお願いいたします。
こちら から仕様が変わっていないように思いますので、値が部分一致にならないようにユニーク性を持たせる必要があると思います。
ルックアップ元に一意の数字(作業内容コードなど)を追加してそちらをルックアップ先に指定する(元の作業内容はフィールドのコピーを利用)、などでしょうか。
たびたびすみません。
ルックアップの自動取得で想定の動作が取れないので教えていただきたく思います。
kintone.events.on(‘app.record.edit.show’, function(event) {
var record = event.record;
record[‘ルックアップ_5’][‘lookup’] = true; // または record[‘ルックアップ’][‘lookup’] = ‘UPDATE’;
record[‘ルックアップ_3’][‘lookup’] = true; // または record[‘ルックアップ’][‘lookup’] = ‘UPDATE’;
record[‘ルックアップ_0’][‘lookup’] = true; // または record[‘ルックアップ’][‘lookup’] = ‘UPDATE’;
return event;
});
としておりまして、既存のデータに関しての変更をする場合は自動で取得がなされるのですが、
新規のデータの場合に取得になりません。
原因はお分かりになりますでしょうか?
一例ですが
Aアプリにあるデータを、Bアプリにアクションでルックアップフィールドへ反映。
自動取得にならない。
という症状です。
すみませんが、お分かりになれば教えていただけますと幸いです。
レコード追加イベント が指定されていない為だと思います。
また、最初の内容と質問が変わる場合は新しく投稿頂くことをオススメします。