ルックアップで取得した数値に if 文 関数を設定したいのですが・・・

Aというアプリで、X薬局とY薬局からもらったお薬ごとの服用数を入力するためのサブテーブルを設定し、横軸に各時期フィールド(朝、昼、夜、寝)ごとの薬の服用数を入力、自動計算フィールドで各時期毎の服用数合計値(a1~a4、b1~b4)を算出します。
各時期毎の服用数合計値フィールドは、X薬局のa1~a4 と Y薬局のb1~b4 の計8個

Bというアプリに上記(a1~a4、b1~b4)の合計値をルックアップで取得します。

Bというアプリの中では、先程取得した数値のフィールドをそれぞれ、
X薬局:a1=◆1、a2=◆2、a3=◆3、a4=◆4 とします。
Y薬局:b1=◇1、b2=◇2、b3=◇3、b4=◇4 とします。

そこに薬運用上のローカルルールとして、
(1)◆1から◇4のうち、取得値が0のものは、「0」にする
(2)◆1から◇4のうち、取得値が0でないものは、全て「1」にする

上記(1)と(2)の条件を設定した値を
◆1~◆4の条件結果をそれぞれ、c1、c2、c3、c4
◇1~◇4の条件結果をそれぞれ、d1、d2、d3、d4 と8つの数値フィールドへ
反映させたいです。

上記の条件を設定したものをJavaScriptで対応したいです。

ソースコードをご教示いただけますとありがたいです。

参考までに、自分で設定したJSソースの例を記載してみます。

**********************************************************************************************

(function() {
“use strict”;

    kintone.events.on([“app.record.detail.show”, “app.record.create.submit”],

function(event) {
    var record = event.record;
    var a = record.◇1.value;
    var b = record.◆1.value;

    if (a = 0) {
        record.c1.value = 0;
    }  

    if (b = 0) {
        record.d1.value = 0;
    }  

    if (a > 0) {
        record.c1.value = 1;
    }

    if (b > 0) {
        record.c1.value = 1;

    return event;
});

**********************************************************************************************

何分、JSはド素人で他のJS例を参考にしながら書いてみたのですが、全然ダメでした。自分にはどこが間違っているのかすら解りません。

ご対応の程よろしくお願い致します。

これで全て動くかはわかりませんが、ぱっとみて気になったところをコメントします。

また、何かエラーはでていませんか?

下記のページを参考にすると、エラーが出ていればエラーが表示されているはずなので見てみてください。

https://cybozudev.zendesk.com/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

ご回答いただきまして、ありがとうございます。

●比較演算子を = から == に変更してみました。

●最後のカッコの閉じ方ですが、下記の通りにしてみました。

    if (b > 0) {
        record.c1.value == 1; )←ここ

上記の通り対応しましたが、駄目でした。

ご教示いただいた通り、エラーを確認してみましたが、下記のように表示されました。

下記のうち、「×」のものを修正すればよいのでしょうか?

正直、下記の3つとも何のことやらよく解りません。

お手数をおかけいたしますが、再度ご教示くださいませんでしょうか?

× SyntaxError: illegal character download.do:6:19

△Mutation Event の使用は推奨されません。代わりに MutationObserver を使用してください。 show.js:52:203

△getAttributeNode() の使用は推奨されません。代わりに getAttribute() メソッドを使用してください。

 

エラーログの提示ありがとうございます。

 

> × SyntaxError: illegal character download.do:6:19

 

illegal character、とありますように使えない文字を使っているようですね。

 

おそらく、ココらへんがまずそうです。

> var a = record.◇1.value;> var b = record.◆1.value;

 

JavaScriptは変数名にマルチバイト文字(日本語とか)はある程度使えますが、特に◇などの記号は使っちゃいけないシーンが多いので、気をつけてください。上記は、下記のようにかけばエラーはなくなります。

 

var a = record["◇1"]["value"];
var b = record["◆1"]["value"];

 

ドット記法とブラケット記法というのがあって、意味は一緒なんですけども、今回のようにエラーにならないためにも日本語とかマルチバイト文字が入る場合はブラケット記法のほうが安心です。

参考: http://qiita.com/marumaru8228/items/dc879fd71178f5209c49

 


 

> 最後のカッコの閉じ方ですが、下記の通りにしてみました。

>    if (b > 0) {
>        record.c1.value == 1; )←ここ

とのことですが、

    if (b > 0) {
        record.c1.value = 1;
    }

上記が正しいかと思います。イコール、ですが、代入の時は=で構いません。比較の時(ifの()の中)の時は==などが正しいですよ、ということでした。(それぞれ 代入演算子 比較演算子 といいます。)

例: aが0のときbに2を代入する。

if ( a == 0 ) {
  b = 2;
}

-----

 

あと、下記のように最後の()も抜けているように思います。最後の()を抜かしてしまうと実行されません。(詳細は 即時関数 で検索してみてください。)

例:

(function() {kintone.events.on(['app.record.detail.show'],function(event) {// 中略
});
})(); // ←最後の()を忘れると動かない