特定条件で保存できないようにする

お世話になります。

JavaScriptの初心者ながらコードを書いてみました。

特定条件で保存できないようにするコードを書いてみたのですが、うまく作動しませんでした。

お手数ですが、先達方のお力添えよろしくお願い致します。

 

【やりたいこと】

データをルックアップし、参照先のデータが"Terminated"(ドロップダウンフォーム)なら保存できないようにする

>参照先のフィールドコードとデータ出力先のフィールドコードは合致させています

 

不足の指定がありましたらご教授お願い致します。

参考にさせていただいたページは以下の通りです。

https://developer.cybozu.io/hc/ja/community/posts/360023680272-%E7%89%B9%E5%AE%9A%E3%81%AE%E6%9D%A1%E4%BB%B6%E3%81%A7%E3%82%A8%E3%83%A9%E3%83%BC%E3%82%92%E5%87%BA%E3%81%99%E3%82%88%E3%81%86%E3%81%AB%E3%81%97%E3%81%9F%E3%81%84

参考にされている記事と Mina Suzuki様が実現されたいことは若干条件が異なっていると思います。

for文の中で「saveFlag = true」とされているのを「saveFlag = false」に変更するか、

「if(!saveFlag)」を「if(saveFlag)」に変更していただくとどうでしょうか。

またrecord.Table.value〜の「Table」の部分にについても、実際のサブテーブルのフィールドコードが入っていますでしょうか。

Taiki Tsujimoto様

ご教授、ありがとうございます!

条件部分、誤っていたんですね。

また、今回やりたいことは、Lookup(テスト)で別アプリからデータ取得したCategoryが"Terminated"だと保存できないようにしたいです。

 

>またrecord.Table.value〜の「Table」の部分にについても、実際のサブテーブルのフィールドコードが入っていますでしょうか。

>>Tableではなく、Dropdownだったので、名称を変えました。

フィールドコードは”Category”で、入力済みだったので特に訂正しませんでした。

 

⇒いただいたアドバイスで修正してみましたが、やはり保存されてしまいました。

お手数ですが、再度ご教授お願いします!

サブテーブルは使用されていないのですね、失礼しました。

参考にされているコードはサブテーブル利用時のパターンとなっています。

 

下記より、通常のドロップダウンとサブテーブルのJSON形式について一度確認してみてください。

https://developer.cybozu.io/hc/ja/articles/202166330

 

今回のパターンですと、サブテーブルではないのでforによるループ処理は不要になるかと思います。

下記のような処理でどうでしょうか。

〜〜

var saveFlag;

if(record.Category.value === “Terminated”){

    saveFlag = true;

}

if(saveFlag){

〜〜

Taiki Tsujimoto様

ありがとうございます!

forの箇所は不要なんですね、勉強になります。

形式のコードの書き方、ありがとうございます!

今後、コードを書いていく際は参考にさせていただきます。

 

上記のコードに上書きしてみました。

結果として、SAVE出来てしまいました。。。

「saveFlag = true」→「saveFlag = false」、または「if(!saveFlag)」→「if(saveFlag)」とするのをどちらも試してみましたが、どちらを試してみてもキーとなるCategoryが”Terminated”なのにSAVEされてしまいます。

JSFiddleで下記コードのURLリンクをアプリのJavaScript設定にしているのですが、それが間違いなのでしょうか?

そともこれはバグになるのでしょうか?それともどこか私の理解不足があるのでしょうか?

丁寧に教えていただいている中、度々申し訳ございませんが、ご教授お願い致します。

開発者ツールを開いて、コンソールをチェックしてみたら、以下のようなエラーが出ていました。

(私では理解できない部分ですが、どの接続先と接続できないのでしょうか?)

content.js:2 Uncaught (in promise) Could not establish connection. Receiving end does not exist.

Chromeの拡張機能に関連したエラーのようですので、

シークレットモード等で拡張機能の無い状態でお試しください。

エラー文で検索すると色々対策方法も出てくるかもしれません。

Taiki Tsujimoto様

ありがとうございます!

シークレットモードで開いて再度、アプリを立ち上げて実行してみましたが、やはり保存されてしまいました。

JavaScriptを入力した箇所の開発者ツールを開いてみたら、変数名や関数名が定義されていないエラー文でしたので

・定義している判定のフィールド名(ドロップダウン名):Category

・判定で使われるTerminated

以上、2点を再度上書きしてみましたが、結果は同じでした。

 

JavaScriptを設定したアプリの開発者ツールを開いてみましたが、エラー等の表示はありませんでした。

 

解決する手がかり、あるのでしょうか?お手数ですがご教授お願い致します。

問題がどこで発生しているのかわかりませんので、

・開発者ツールのSourcesタブより、意図したjsファイルが正常に読み込まれているか確認

→読み込まれている場合

ブレイクポイントを使用しどこで問題が発生しているかを特定

参考)https://developer.cybozu.io/hc/ja/articles/207613916-%E5%8B%95%E3%81%8B%E3%81%AA%E3%81%84-%E3%81%9D%E3%82%93%E3%81%AA%E6%99%82%E3%81%AF%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E3%82%92%E3%81%97%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86-%E5%85%A5%E9%96%80%E7%B7%A8

 

→読み込まれていない場合

JSFiddleによるURL参照ではなくJSを一度ローカルファイルとして保存し、ファイルアップロードで適用

こんにちは。プロジェクト・アスノートの松田です。

横から失礼します。

>JSFiddleで下記コードのURLリンクをアプリのJavaScript設定にしているのですが、それが間違いなのでしょうか?

のところが気になります。

まずは、チュートリアルに習って、普通にJavaScriptファイルを作って、kintoneにアップロードしてみてください。

Shotaro Matsuda様

はじめまして、ご教授ありがとうございます。

仰る通り、リンクの設定ではなく、jsファイルにしてアップロードしたらできました!

まだまだ基礎が理解しきれないようですので、再度勉強しなおします。

ありがとうございました。

Taiki Tsujimoto様

連日ご教授いただき、ありがとうございました!

なんとか無事に設定できました。

コードの書き方はまだまだ知識・理解不足なので、いただいた参考リンクをもとにもっと理解を深めようと思います。

どうもありがとうございました!

Suzukiさん

まずはチュートリアルにしたがって、ひと通り手を動かしてみて、

基本的な事項を理解してから、実際に使用されるアプリのカスタマイズに取り掛かる方がいいと思います。

急がば回れ です!

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。