複数のルックアップの自動更新について

お世話になっております。

標題の件についてですが、「第11回 REST APIを利用したレコード更新」

自動更新はできたのですが、複数のアプリからルックアップのコピー元のフィールドを参照する場合の方法をご教授いただければと幸いでございます。

現在、単純にルックアップ先のアプリIDを下記のように並べて記載したのですが、1つしか自動で更新ができませんでした。

var updateAppId = 100;

var updateAppId = 101;

また、別JavaScriptファイルにて上記IDを分けて登録しても、1つしか自動で更新ができませんでした。

何卒、宜しくお願い致します。

Nao さん

 

こんにちは。

同じ変数名を使っているからIDの値が上書きされているとかはないでしょうか?

一度それぞれ違う変数名で試してみてはいかがでしょう。

カキ氷様

ご返信ありがとうございます。

ご教示いただいた内容で書き換えると問題なく出来ました。

ありがとうございます。

ちなみに、同一の変数名で実装することはやはりできないのでしょうか?

度々お手数でございますが、ご確認お願い致します。

Naoさん

処理が競合しない場所でしたら変数名が同じ名前でも問題ありません。書き方次第でどのようにでも記載は可能です。

ただ、変数のスコープ(有効範囲)を理解して実装しないと、自分の書いたプログラム以外にも影響をあたえるので注意が必要です。

例えば自身の記載したプログラムでプラグインが動作しなくなることもあります。

 

簡単にですが、変数の有効範囲について記載します。

// 以下の param は関数内の中だけで有効になるので競合しない
(function() {
  "use strict";

  function funcA() {
   var param = 'AAA';
   alert(param); // AAA
  }

  function funcB() {
   var param = 'BBB';
   alert(param); //BBB
  }

  kintone.events.on('app.record.detail.show', funcA);
  kintone.events.on('app.record.detail.show', funcB);
})();

// 以下の param はfuncC(),funcD()内でも有効になるため競合する
(function() {
  "use strict";
  var param = 'AAA';
  alert(param); // AAA

  function funcC() {
   var param = 'CCC';
   alert(param); // CCC
  }

  function funcD() {
   var param = 'DDD';
   alert(param); // DDD
  }

  kintone.events.on('app.record.detail.show', funcC);
  kintone.events.on('app.record.detail.show', funcD);
})();

一番外に記載された (function() {})(); の外側に変数を記載すると、ファイルを跨いでも変数が有効になりますが、
どのファイルと競合するかわからずバグの原因になりますのでご注意ください。