最近kintoneでの開発を始めたものです。知識が乏しいため、ご教示頂けないでしょうか。
重複しないIDを設定したく下記のjsコードを動作させたいのですが、
kintone独自のAPIについて知識が乏しく、試行錯誤してみたのですがうまくいきません。
文字列のターゲット指定に必要なAPIをご教示いただけないでしょうか。
よろしくお願い致します。
(function (k) {
var c = new Date();
var d = String(c.getFullYear());
var o = String((“0” + (c.getMonth() + 1)).slice(-2));
var h = String((“0” + c.getDate()).slice(-2));
var e = String((“0” + c.getHours()).slice(-2));
var f = String((“0” + c.getMinutes()).slice(-2));
var p = String((“0” + c.getSeconds()).slice(-2));
var b = String((“0” + c.getMilliseconds()).slice(-2));
var a = 8;
var g = “abcdefghijklmnopqrstuvwxyz”;
var n = g.length;
var m = “”;
for (var j = 0; j < a; j++) {
m += g[Math.floor(Math.random() * n)]
}
var l = d + o + h + e + f + p + b + “-” + m;
k(“#文字列”).val(l);
k(“#文字列”).prop(“disabled”, true)
})(jQuery);
※文字列のフィールドコードをこちらでは#文字列で記載しています。
佐々木さん
お世話になっております。
コードを拝見したところ、フィールドの値の書き換えと入力不可設定を行いたいということでしょうか?
上記の2つであれば、DOM操作は不要になります。
フィールドの値を書き換える
フィールドの編集可/不可を設定する
もしDOM操作を行う場合は、以下を御覧ください。
JavaScriptファイル読み込み時では、まだテキストボックスなどの要素が生成されていないかと思います。
レコード追加画面の表示後イベントなどの中で要素の取得を行うと良いと思います。
ただし、レコード追加画面や編集画面で個別のフィールド要素を取得するkintoneのAPIはございません。
スペースフィールドであれば取得できるので、スペースフィールドを用意して、その中にテキストボックスを自作するなどが解決策かと思います。
https://developer.cybozu.io/hc/ja/articles/201942014#step6
また、非推奨ですが下記のようにHTMLのclass指定などで無理やり取得する方法もあります。
https://developer.cybozu.io/hc/ja/community/posts/360040177771
丁寧にご回答いただきましてありがとうございます。
文字列フィールドをグレーアウトもしくは非表示にして
新規作成の内容保存時にjsコードで記載したユニークIDが自動発行されるのが希望です。
初歩的なご質問となり大変恐縮ではございますが、
このフィールドの値を書き換えるの方法は、文字列のみでは不可能で、
テーブルとセットで検討する必要があるということでしょうか。
また、教示いただいた内容でこのような動作をさせることは可能なのでしょうか。
非推奨として記載いただきました、class指定とプラグイン利用は
今のところ選択肢としては検討しておりません。
もしよろしければ必要なコードなどをお伺いできますと幸いです。
お忙しいところ恐れ入りますが、何卒宜しくお願い致します。
佐々木さん
お世話になっております。
> テーブルとセットで検討する必要があるということでしょうか
必要ないです。フィールドの値を書き換えるのサンプルコードの4~15行目は省いてしまってよいかと思います。
>文字列フィールドをグレーアウトもしくは非表示にして新規作成の内容保存時にjsコードで記載したユニークIDが自動発行されるのが希望。教示いただいた内容でこのような動作をさせることは可能なのでしょうか。
はい、可能です。
必要なコードとしては下記の2つの組み合わせになります。
フィールドの値を書き換える
フィールドの編集可/不可を設定する
編集不可については、サンプルでは’app.record.create.change.ドロップダウン_0’イベントでの実装になっていますが、'app.record.create.show’イベントでの実装に変更すればよいかと思います。
kintoneのイベントについては、プロジェクト・アスノートさんの動画などでわかりやすく解説されています。
https://www.youtube.com/watch?v=35qJl3uljZE
佐々木さん
お世話になっております。
> テーブルとセットで検討する必要があるということでしょうか
必要ないです。フィールドの値を書き換えるのサンプルコードの4~15行目は省いてしまってよいかと思います。
必要なコードとしては下記の2つの組み合わせになります。
フィールドの値を書き換える
フィールドの編集可/不可を設定する
編集不可については、サンプルでは’app.record.create.change.ドロップダウン_0’イベントでの実装になっていますが、'app.record.create.show’イベントでの実装に変更すればよいかと思います。
kintoneのイベントについては、プロジェクト・アスノートさんの動画などでわかりやすく解説されています。
https://www.youtube.com/watch?v=1hmMmGaRDfY
詳しくご教示頂きまして心より感謝致します。
しかし全くの初心者のためか、jsコードをどこに入力すれば良いのか
調べても未だわかっておらず、シェア頂いた動画やコミュニティなどを拝見
検索して何度も書き換えてはトライしてみているのですが、どうしてもうまくいきません。
使用しているプラグインのjseditではエラーなど表示されないのですが、
やはりjsコードの自動発行がうまくいきません。
再々初歩的なご質問で申し訳ございませんが、
フィールドの値を書き換えるのサンプルコードの4~15行目は省いて、
どのように初回のご質問のjsを組み込めばうまく動作しますでしょうか。
フィールドの編集可/不可を設定するはおかげさまでうまく動作致しました!
ありがとうございます。
佐々木さん
お世話になっております。
>フィールドの値を書き換えるのサンプルコードの4~15行目は省いて、どのように初回のご質問のjsを組み込めばうまく動作しますでしょうか。
おそらく、当初のコードの「l」が代入したい値かと思いますので、「‘この文字列で上書き’」を「l」に書き換えればよいかと思います。
また、フィールドコード部分をご自身のアプリの設定に合わせて変更するとよいかと思います。
ご質問内容から推測するところ、下記のようになるかと思います。
record['文字列'].value= l;
動作しない場合は、下記などを参考にブラウザのコンソール画面を確認するとよいかと思います。
https://developer.cybozu.io/hc/ja/articles/207613916
江田さま
お世話になっております。
連日ご丁寧に教えて頂きましてありがとうございます。ご教示いただきました内容にて、無事に動作させることができました。
まだ初心者で知識不足なことが多いため、改めて理解を深められるよう学びに努めたいと思います。
どうしても自身で解決に至らないことがあれば、再びご相談させていただくことがあるかと思いますが、
今後とも何卒よろしくお願い致します。
本当にありがとうございました。