Kintoneのルックアップ自動更新のカスタマイズができない
解決したいこと
ご質問失礼致します。
こちらを参考にルックアップの自動更新を試しているのですが、
「指定されたフィールドが見つかりません」というエラーが出てしまっております。
更新元アプリでは、レコードの削除を行ったことがある為、
レコード番号に相違が生じることが原因だと考えました。
ですので、レコード番号ではなく、ルックアップのキーとなっている対象である
フィールド名:ID
フィールドコード:ID
こちらを元に更新したいと思いました。
// 更新したいレコードデータ「createPutRecords」関数を作成
createPutRecords関数にて、ルックアップ先のルックアップ対象であるIDフィールド(フィールドコードもID)のフィールドコード(id)とその値(record.lookup.value)取得。
// レコードの一括取得(100件まで)
コピー元のIDの情報を取得
// ルックアップの更新
createPutRecords関数で得た情報をもとにコピー先のレコードを更新
このように考えて下記のスクリプトにしてみたのですが、うまくいっていない状態です。
根本的な理解も不足している状態かと思いますが、参考になる情報など、ご教授頂けま線でしょうか。
宜しくお願いします。
発生している問題・エラー
// 本javascriptを導入するのはルックアップ元のアプリケーション
// ルックアップ元アプリ appid32 :開発テスト_Master
// ルックアップ先アプリ appid34 :開発テスト_Branch(IDでルックアップ)
/*
* ルックアップ更新のサンプルプログラム
* Copyright (c) 2019 Cybozu
*
* Licensed under the MIT License
*/
(function() {
'use strict';
// ルックアップ先のアプリID
var updateAppId = 34;
/**
* kintone REST APIで一括更新するrecordsデータを作成する関数
* @param records kintone REST APIで一括取得したrecordsデータ
* @returns {Array} kintone REST APIで一括更新するrecordsデータ
*/
// 更新したいレコードデータ「createPutRecords」関数を作成
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,
record: {
lookup: {
value: record['ID'].value
}
}
};
}
return putRecords;
}
// 保存成功後イベント
kintone.events.on(['app.record.edit.submit.success', 'app.record.index.edit.submit.success'], function(event) {
// レコードの一括取得(100件まで)
var paramGet = {
'app': updateAppId,
'query': 'lookup = ' + event.record['ID'].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