サクラエビさん
再ルックアップ取得をさせている処理部分のソースを載せます。
案件進捗というアプリで、案件一覧というアプリの値をルックアップ取得しており、
案件一覧側で情報更新を行うと、案件進捗アプリで自動でルックアップを再取得させようとしています。
/* 要件No.3-2 案件一覧アプリ:アプリ間連携_再ルックアップ取得 */
(function () {
“use strict”;
/* ------------------------------------------------------------ /
/ 初期設定 /
/ ------------------------------------------------------------ */
// ************************************************************************
// アプリID
// ************************************************************************
// 案件一覧
var sourceAppID = 41;
// 案件進捗
var destAppID_3_2 = 50;
// ************************************************************************
// 要件No.3-2 案件一覧 → 案件進捗
// ************************************************************************
// 案件一覧アプリフィールドコードセット
var sourceFldCd_3_2 = {
"RecAnkenNo" : "rec案件一覧レコード番号" // 案件一覧レコードNo
};
// 案件進捗画面フィールドセット
var destFldCd_3_2 = {
"RecAnkenNo" : "loo案件一覧レコード番号" // 案件一覧レコードNo
};
// ルックアップ再取得対象のフィールドコード
var lkupFldCd = 'loo案件一覧レコード番号';
// 案件進捗レコード番号
var recNoFldCd = 'rec案件進捗レコード番号';
// 案件進捗から取得するフィールド
var getFlds = [ lkupFldCd,
recNoFldCd ];
// kintone API で一括更新できる上限件数
var ikkatsuMax = 1;
/* ------------------------------------------------------------ /
/ イベント /
/ ------------------------------------------------------------ */
// ************************************************************************
// レコード一覧画面の「保存ボタン」クリック時イベント⇒不具合発生のため、詳細表示イベントに変更(2014/11/2)
// レコード編集画面の保存実行前イベント
// ************************************************************************
var events_4_2 = ['app.record.detail.show', 'app.record.index.edit.submit'];
kintone.events.on(events_4_2, function(event){
// 案件一覧レコード番号
var anknRecNo = event.record['rec案件一覧レコード番号']['value'];
// kintone.api の戻り値格納用
var responseGetData;
var lkupRecQuery = lkupFldCd + " in (" + anknRecNo + ")";
lkupRecQuery += " limit " + ikkatsuMax;
// console.log("取得条件 : " + lkupRecQuery);
// 案件進捗から対象レコードを取得
// リクエストJSON
var requestGetJSON = { fields: getFlds, app: destAppID_3_2, query: lkupRecQuery };
// kintone.api の実行 : REST API で指定アプリのレコードから取得する
kintone.api('/k/v1/records', "GET", requestGetJSON,
function(responseGetData) {
// console.log(“clickCalcRemuneration() OK”);
var getRecords = responseGetData.records;
// 取得件数が 0 以上の場合
if(getRecords.length > 0) {
var updtRecNo = getRecords[0][recNoFldCd]['value'];
// 画面上のレコード情報から指定アプリにコピーする (UPDATE)
UpdateRecord(event, sourceFldCd_3_2, destFldCd_3_2, destAppID_3_2, updtRecNo);
}
}, function(responseGetData) {
// console.log("clickCalcRemuneration() NG : " + responseGetData.message);
}
);
return event;
});
/* ------------------------------------------------------------ /
/ 関数 /
/ ------------------------------------------------------------ */
// ************************************************************************
// 画面上のレコード情報から指定アプリに1件コピーする (UPDATE)
// event : 画面上のレコード情報を含むイベントオブジェクト
// sourceFldCd : コピー元のフィールドコードのオブジェクト
// destFldCd : コピー先のフィールドコードのオブジェクト
// destAppID : コピー先のアプリID
// updtRecNo : アップデート対象となるコピー先レコード番号
// ************************************************************************
function UpdateRecord(event, sourceFldCd, destFldCd, destAppID, updtRecNo) {
// kintone.api の戻り値格納用
var responsePutData;
// リクエストJSON 用 record
var record = {};
for ( var key in sourceFldCd ) {
record[destFldCd[key]] = { value: event.record[sourceFldCd[key]]['value'] };
}
// リクエストJSON
var requestPutJSON = { app: destAppID, id: updtRecNo, record: record };
// kintone.api の実行 : REST API で指定アプリのレコードに登録する
kintone.api('/k/v1/record', "PUT", requestPutJSON,
function(responsePutData) {
// console.log(“UpdateRecord() OK”);
}, function(responsePutData) {
// console.log("UpdateRecord() NG : " + responsePutData.message);
}
);
return;
}
})();