テストアプリの以下のスクリプトを本番アプリのJSEditにコピペし実行すると・・・
レコードを再読み込みしてください。編集中に、ほかのユーザーがレコードを更新しました。
(GAIA_UN03 CkIVbDal0g2kcPI1obuv)
まったく同じ環境(SweatAlertをv2.1.2)なのですが、何故でしょうか?
(function () {
"use strict";
const events = ['app.record.create.submit.success','app.record.edit.submit.success'];
kintone.events.on(events,async function(event) {
const record = event.record;
const fileName = record["ファイル名"].value;
const alert = {
title: fileName,
text: 'このファイル名をクリップボードにコピーしました!',
button: 'OK'
};
await navigator.clipboard.writeText(fileName).then(async resp => {await swal(alert)});
return event;
});
})();
見た限り問題はないように見えますが…
文字通り「編集画面を開いてから保存するまでにレコードの内容が書き換わっていた時」に発生するエラーのため、考えられる原因としては
①他のJavaScriptで対象のレコードを書き換える処理(PUT)を走らせている(このアプリだけでなく、他のアプリでこのアプリを更新するスクリプトがある場合も同様)
②編集中に他のユーザーが編集して保存完了させている
のいずれかではないかと思います
mls-hashimoto さま
ご教示ありがとうございます。
①の他のアプリで更新するスクリプトはなく、併せて本番アプリはまだ公開していないので②もありません。
初心者故、初心者フォーラムに質問を上げましたが、レスが付かずこちらに質問した次第です。
宜しくお願い致します。
FURUNO.T さま
他の可能性として、submit.successイベントにおいて実行中の処理がエラーで停止した場合に「レコードは保存されるものの、画面はそのまま」といった状態になるため、この状態で再度保存する際にエラー発生、といったことが考えられます。
SweetAlertが読み込まれていない可能性があります。
また、保存時にコンソールにエラーが出力されているかと存じます。
mls-hashimoto さま
検証ありがとうございます。
新規追加は保存時エラーが出ず詳細編集のままとなりますが、保存はされます。
編集時は2度保存ボタンを押すとエラーが表示され、保存はできてもコピーができてません。
SweatAlertは、v2.1.2 を一旦外し再組み込みしてもだめです。
コンソールは、保存を押すと
f.G=function(){On.m.G.call(this);this.stop();delete this.c};q($n,jb);var co=[];f=$n.prototype;f.F=function(a,b,c,d){return ao(this,a,b,c,d)};f.Mc=function(a,b,c,d){return eo(this,a,b,c,d)};f.oa=function(a,b,c,d,e){if(Array.isArray(b))for(var g=0;g<b.length;g++)this.oa(a,b[g],c,d,e);else if(a=ie(a,b,c||this.handleEvent,ya(d)?!!d.capture:!!d,e||this.ua||this))ge(a),delete this.c[a.key];return this};f.G=function(){$n.m.G.call(this);ho(this)};f.handleEvent=function(){throw Error(“EventHandler.handleEvent not implemented”);};q(io,jb);f=io.prototype;f.ib=0;f
の部分がハイライトになってます。
FURUNO.T さま
submit.successイベントの処理でエラーが起きているのは間違いないようですね。
現段階では特定できないので、可能であればエラー部分の全体(折り畳みを開いたところ)かスクリーンショットを頂くことは可能でしょうか。
mls-hashimoto さま
検証ありがとうございます。
エラー部分の全体(折り畳みを開いたところ) ←これのやり方が解りません。
スクショは編集時ですが、新規追加時は
this)},rk=function(a,b){a.readyState=b;if(a.onreadystatechange)a.onreadystatechange()},tk=function(a){this.c=a;sk(this.c,function(){this.c=null},this)},uk=function(a){if(!a)return!1;try{return!!a.$goog_Thenable}catch(b){return!1}},vk=function(a,b){this.l=a;this.o=b;this.j=0;this.c=null},wk=function(a,b){a.o(b);100>a.j&&(a.j++,b.next=a.c,a.c=b)},xk=function(){this.j=this.c=null},yk=function(){this.next=this.scope=this.vf=null},zk=function(a){n.setTimeout(function(){throw a;},0)},Fba=function(){var a=
がハイライトになります。
mls-hashimoto さま
いつもありがとうございます。こんなで宜しいでしょうか?
不思議なことに新たに簡単なアプリを作成し、このJSの動作確認を行ったのですが正常でした。また既存の別な本番アプリにも試したのですが、こちらも正常でした。何故でしょう・・・?
追伸
組み込んでいるプラグインの違いが関係しているか確認します。
mls-hashimoto さま
しらみつぶしにプラグインの出し入れを行ったところ、吹き出しプラグインを外したら正常に動きました。
色々と検証していただきありがとうございました。
プラグインが原因と解ったことは勉強になりました!
了
FURUNO.T さま
無事に解決したようで何よりです。
エラー(画像右上の赤い部分)を見る限り、恐らくプラグインが特定のフィールドを参照しようとして取得できていない状態ではないかと推測いたします。
考えられることとしては、
①フォームの設定でプラグインが参照しているフィールドを削除するか、フィールドコードを変更した後にプラグインの再設定を行っていない
②プラグインごと他のアプリをコピーして新しいアプリを作成し、プラグインの設定を行っていない
辺りかと思われます。
(繰り返しになりますが、画像にサブドメインが写っているので削除をおすすめいたします)
mls-hashimoto さま
サブドメインに気づきませんでした。
このレスを見る前に、初心者フォーラムの「別のアプリの値を取得したい」にも貼り付けてしまいました!
①も②該当しませんし、別のプラグインで用が足りましたので外しました。
色々ありがとうございました。また宜しくお願い致します。
了