新規投稿
フォローする

ルックアップ自動更新 レコード番号以外のルックアップ

第11回 kintone REST APIを利用したレコード更新(ルックアップ自動更新)

を参考にして、レコード番号でのルックアップ自動更新はできたのですが、

文字列にすると上手く反応しなくなってしまいます。

 

見よう見まねでやっているため、基本的な部分の間違えだと思うのですが、

ご教授頂けると幸いです。宜しくお願いします。

 

ルックアップ元のアプリ(顧客)のフィールドコード:company

ルックアップ先のアプリ(見積)のフィールドコード:会社

 

/*
* ルックアップ更新のサンプルプログラム
* Copyright (c) 2019 Cybozu
*
* Licensed under the MIT License
*/
(function() {
'use strict';
// 見積もり管理アプリのアプリID
//
var updateAppId = 64;
//
/**
* kintone REST APIで一括更新するrecordsデータを作成する関数
* @param records kintone REST APIで一括取得したrecordsデータ
* @returns {Array} kintone REST APIで一括更新するrecordsデータ
*/
function createPutRecords(records) {
var putRecords = [];
for (var i = 0, l = records.length; i < l; i++) {
var record = records[i];
putRecords[i] = {
// id: record.$id.value,

updatekey: {
field: 'company',
value: record['record'].value
},

record: {
会社: {
value: record['会社'].value
}
}
};
window.alert(putRecords[i]);
}
return putRecords;
}
// 保存成功後イベント
kintone.events.on(['app.record.edit.submit.success', 'app.record.index.edit.submit.success','mobile.app.record.edit.submit.success'], function(event) {
// レコードの一括取得(100件まで)
var paramGet = {
'app': updateAppId,
//
'query': '会社 =" ' + event.record['company'].value+ ' " '
//
};
return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', paramGet).then(function(resp) {
// ルックアップの更新
var records = resp.records;
var paramPut = {
'app': updateAppId,
'records': createPutRecords(records)
};
return kintone.api(kintone.api.url('/k/v1/records', true), 'PUT', paramPut);
}).then(function(resp2) {
// 処理成功
alert('ルックアップの更新が完了しました!');
return event;
}).catch(function(error) {
// エラー表示をする
alert('ルックアップの更新でエラーが発生しました。\n' + error.message);
return event;
});
});
})();
0

3件のコメント

Avatar
juridon

こんにちは!

うまく反応しないというのはどういう状況でしょうか?
「ルックアップの更新でエラーが発生しました」のダイアログ表示が出るという状態でしょうか?

また、コードの前に確認する点として、

ルックアップ元のアプリ(顧客)のフィールドコード:company

は重複禁止になっていますでしょうか?👀

0
Avatar
PD.S

juridon様

コメントありがとうございます。

「ルックアップの更新が完了しました!」は出るのですが、見積アプリが更新していないという状況です。

重複禁止設定になっております。

手動だとルックアップの取得ができます。エラーコードはでません。

 

エラーコードが出ないので、どこかの設定の問題かもしれないのですが、思い当たることがあれば教えて頂きたいです。

宜しくお願いします。

1
Avatar
juridon

こんにちは!

GETやPUTなどAPIを使うと非同期な処理となるため、書いた順番通りに実行されない可能性があります。
もしかしたらGETしている間に次のPUTに進んで(何故成功処理になるかはわからないですが)コードが終わってしまっている?可能性もあります。

GETとPUTなどapiを連続して連携して使用したい場合は、async/await を使うと便利だと思います。
↓こちら参考になれば・・・と思います!
目指せ!JavaScriptカスタマイズ中級者(2) 〜Promiseのかわりにasync/await編〜


0
サインインしてコメントを残してください。