//ご利用の環境に合わせ、修正してください。 //【各種フィールドコード】 //ルックアップ元A:ルックアップ元アプリのルックアップ対象フィールドコード //ルックアップ元B:ルックアップ元アプリの、ルックアップ時にコピーされるフィールドコード //ルックアップA:krewSheetアプリのルックアップフィールドのフィールドコード //テーブル:krewSheetアプリのテーブルのフィールドコード //javascript転記_ルックアップA:保存実行前イベントにより、ルックアップフィールドが転記される先のフィールドコード //javascript転記_ルックアップB:保存実行前イベントにより、コピーされた値が転記される先のフィールドコード //【アプリID】 // XXXXX:ルックアップ元アプリのアプリID (function () { "use strict"; kintone.events.on("app.record.index.show", function (e) { if (window.krewsheet) { krewsheet.events.on('app.record.index.edit.submit', function (event) { let value = {}; let record = event.records; //ルックアップフィールドの値を取得 for (let i = 0; i < record.length; i++) { let tableSize = record[i]['テーブル']['value'].length; for (let m = 0; m < tableSize; m++) { value[record[i]['テーブル']['value'][m]['value']['ルックアップA']['value']] = true; } } let keys = Object.keys(value).map(s => { return '"' + s + '"' }).join(", "); //ルックアップ元のアプリIDを設定 let masterAppId = XXXXX; let query = 'ルックアップ元A in (' + keys + ")"; //ルックアップ元のアプリからレコードを取得 return new kintone.Promise(function (resolve, reject) { let params = { app: masterAppId, query: query }; kintone.api(kintone.api.url('/k/v1/records', true), 'GET', params, function (resp) { resolve(resp); }); }).then(function (resp) { let map = {}; resp.records.forEach(s => { map[s["ルックアップ元A"].value] = s["ルックアップ元B"].value }); //取得した値を元に、krewSheetのフィールドに値を設定する。 for (let i = 0; i < record.length; i++) { let tableSize = record[i]['テーブル']['value'].length; for (let m = 0; m < tableSize; m++) { let key = record[i]['テーブル']['value'][m]['value']['ルックアップA']['value']; //value[record[i]['テーブル']['value'][m]['value']['ルックアップA']['value']] = true; record[i]['テーブル']['value'][m]['value']['javascript転記_ルックアップA']['value'] = key; record[i]['テーブル']['value'][m]['value']['javascript転記_ルックアップB']['value'] = map[key]; } } return event; }); }); } }); })();