# promise処理について教えてください

**URL:** <https://community.cybozu.dev/t/topic/7450>\
**Category:** kintone 開発相談\
**Created:** [2021 年 4 月 1 日午前 1:48 UTC](https://community.cybozu.dev/t/topic/7450 "2021-04-01T01:48:33Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account2447](https://avatars.discourse-cdn.com/v4/letter/l/67e7ee/32.png) [@Legacy\_Account2447](https://community.cybozu.dev/u/Legacy_Account2447)\
**Post date:** [2021 年 4 月 1 日午前 1:48 UTC](https://community.cybozu.dev/t/topic/7450/1 "2021-04-01T01:48:33Z")

</div>

いろいろ調べて、以下のコーディングを行ったのですが、最後のif文の判断によるevent.errorとtableCreateが実行されません。

申し訳ございません、どなたか解決方法を教えていただけないでしょうか。よろしくお願いします。

```
/**
* 対象年月が変更された場合に日付テーブルを再作成
* 
*/
(function(){
"use strict";
kintone.events.on(['app.record.create.change.年','app.record.create.change.月'],(event) => {
new kintone.Promise(function (resolve) {
resolve(doubleRecCheck(event));
});
return event;
});
})();
/**
* 年月レコードの存在チェック
* 
*/
function doubleRecCheck(event) {
'use strict';
let rec = event.record;
if (rec) {
if (rec.技術者CD.value && rec.年.value && rec.月.value) {
let dobleCheck = rec.技術者CD.value + "_" + rec.年.value + "_" + rec.月.value;
let changeYear = rec.年.value;
let changeMonth = rec.月.value;
rec.基準日.value = changeYear + "-" + changeMonth + "-" + "1";

let appID = kintone.app.getId();
let setQuery = "重複チェック = \"" + dobleCheck + "\"";
let body = {
'app': appID,
'query': setQuery,
'fields': ['技術者', '年', '月', '重複チェック']
};
kintone.api(kintone.api.url('/k/v1/records', true), 'GET', body).then(function (resp) {
window.alert("レコード件数：" + resp.records.length);
if (resp.records.length > 0) {
window.alert(rec.技術者.value + "の" + rec.年.value + "年"
+ rec.月.value + "月の勤務実績は既に登録されています。");
event.error = rec.技術者.value + "の" + rec.年.value + "年"
+ rec.月.value + "月の勤務実績は既に登録されています。";
} else {
window.alert("技術者：" + rec.技術者.value + " 年：" + changeYear + " 月：" + changeMonth);
window.alert(rec.勤務実績.value.length);
tableCreate(rec,changeYear,changeMonth);
}
});
}
}
}

```

&nbsp;

&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2447](https://avatars.discourse-cdn.com/v4/letter/l/67e7ee/32.png) [@Legacy\_Account2447](https://community.cybozu.dev/u/Legacy_Account2447)\
**Post date:** [2021 年 4 月 5 日午前 10:04 UTC](https://community.cybozu.dev/t/topic/7450/2 "2021-04-05T10:04:17Z")

</div>

自己解決しました。以下の通り、kintone.app.record.get();やreturn eventの場所を変更すると動くようになりました。

```
/**
* 対象年月が変更された場合に日付テーブルを再作成
* 
*/
(function(){
"use strict";
kintone.events.on(['app.record.create.change.技術者',
'app.record.create.change.年','app.record.create.change.月'],(event) => {
let rec = event.record;
if (rec.技術者CD.value && rec.年.value && rec.月.value) {
rec.重複チェック.value = rec.技術者CD.value + "_" + rec.年.value + "_" + rec.月.value;
let basicDate = new Date(rec.基準日.value);
let valueYear = basicDate.getFullYear();
let valueMonth = basicDate.getMonth() + 1;
// window.alert("valueYear:" + valueYear + " valueMonth:" + valueMonth);
new kintone.Promise(function (resolve) {
resolve(doubleRecCheck(rec,valueYear,valueMonth));
});
}
return event;
});
})();

/**
* 年月レコードの存在チェック
* 
*/
function doubleRecCheck(rec,valueYear,valueMonth) {
'use strict';
if (rec) {
if (rec.技術者CD.value && rec.年.value && rec.月.value) {
let dobleCheck = rec.技術者CD.value + "_" + rec.年.value + "_" + rec.月.value;
let changeYear = rec.年.value;
let changeMonth = rec.月.value;
rec.基準日.value = changeYear + "-" + changeMonth + "-" + "1";

let appID = kintone.app.getId();
let setQuery = "重複チェック = \"" + dobleCheck + "\"";
let body = {
'app': appID,
'query': setQuery,
'fields': ['技術者', '年', '月', '重複チェック']
};
kintone.api(kintone.api.url('/k/v1/records', true), 'GET', body).then(function (resp) {
let rec1 = resp.records;
let event = kintone.app.record.get();
let rec2 = event.record;
if (rec1.length > 0) {
rec2.技術者.error = rec2.年.value + "年" + rec2.月.value + "月の勤務実績は既に登録されています。";
} else {
window.alert("技術者：" + rec.技術者.value + " 年：" + changeYear + " 月：" + changeMonth);
new kintone.Promise(function (resolve) {
resolve(tableRecreate(rec2,changeYear,changeMonth));
});
}
kintone.app.record.set(event);
return event;
});
}
// return event;
}
}

```
