ルックアップ項目の自動更新について

内田です。

ルックアップ項目を変更した場合、自動で更新を行いたく、

「第11回 kintone REST APIを利用したレコード更新」https://developer.cybozu.io/hc/ja/articles/204537310 

サンプルに従って、手元で作成し動作が確認で出来ました。

実際は、ルックアップが「顧客名」(フィールドコード:cust_name)なので

コードを修正してみましたが、うまく動きません。

(ルックアップの更新が完了しました! は表示されるが、、)

 

修正点したソースは以下の内容ですが、不足ありますでしょうか?

cust_name: {
value: record.cust_name.value

query: ‘cust_name = "’ + event.record[‘cust_name’].value + ‘"’

 

デバッグ:

{result: {items: [], totalCount: “0”}, success: true}
result
:
{items: [], totalCount: “0”}
success
:
true

なぜか、件数が0となっています。(デバッグツールまだよく理解できていませんが、、)

ルックアップが文字列の場合に考慮する点はありますでしょうか?

それと、「$id」の記述は修正が必要でしょうか?

 

まだ駆け出しなので、よろしくお願いします。

uchida さん

$id は、どのアプリにも必ずあるレコード番号ですので、変更する必要はありません。

対象レコードの抽出・更新処理自体は正常に終了していますので、
一番に考えられるのは、単純に対象レコードが無い可能性があります。

rex220さん

早々の回答ありがとうございます。

更新したいアプリ側には97件のデータを作成してあります。

>対象レコードの抽出件数・更新件数の取得はどのようにすればいいですか?

 

お手すきの時に返信いただければ幸いです。

例えば、 event.record[‘cust_name’].value : “XXXX” の顧客名であれば、

更新したいアプリの一覧画面の絞り込み条件で、「顧客名= “XXXX”」を指定します。

対象レコードがあれば、一覧表示されるはずです。

 

件数取得をデバッグで確認する方法があれば教えてくださいという趣旨でした。

言葉足らずで申し訳ありません。

ソースを上げた方がいいでしょうか?

デバッグツールでブレークポイントを指定して、変数にカーソルを当てると中身が見れます。

JavascriptのChromeでのデバッグ方法個人的まとめ2016

他にも便利なしくみがいろいろありますので、デバッグツールを活用してください。

 

まさに同じページを見てました。

まだよくデバッグの仕方が分かりませんが、

var records = resp.records;

で recordsはArray(0)、length:0

だったので、更新するべき値が取得出来ていないってことか?

query: ‘cust_name = "’ + event.record[‘cust_name’].value + ‘"’

これがうまく取れてないってことでしょうか?

query: ‘cust_name = "’ + event.record[‘cust_name’].value + ‘"’ の条件に合う対象レコードが無いということです。

>更新したいアプリ側には97件のデータを作成してあります。

問題を整理すると、

テストしているルックアップ元レコードに対して、「更新したいアプリ側には97件」に対応するレコードが無いのか?

または、そもそも指定条件が異なるのかのどちらだと思います。

 

 

顧客名:「湘南 太陽」を「湘南 太陽さん」に変更とき、

トレースを追っかけると配列は「0」件で、

これを「湘南 太陽」に戻した時のトレースは正しく配列に6件が表示される。

 

なんか初歩的な間違をしてるのかな?

なるほど、ルックアップのキーを変更しているわけですね。原因がわかりました。

「第11回 kintone REST APIを利用したレコード更新」のサンプルコードは、キー変更には対応していません。

対象レコードを「湘南 太陽」で抽出して、更新は「湘南 太陽さん」で変更する必要があります。

 

 

 

 

旧の「顧客名」を取得して、その旧「顧客名」を抽出して、新「顧客名」で更新する

ロジックとすると、旧「顧客名」を取得しているソースは、どこになりますか?

ルックアップ先更新プラグイン で、同じような処理を行っています。

このときは、edit.show イベントでセッションストレージにルックアップキーをあらかじめ退避するしくみにしています。

ちょっと面倒ですが、がんばってください。

>「第11回 kintone REST APIを利用したレコード更新」のサンプルコードは、キー変更には対応していません。

>対象レコードを「湘南 太陽」で抽出して、更新は「湘南 太陽さん」で変更する必要があります。

そういうことなのですね。やっと理解できました。

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