こちらの処理を実装したいと思っています。
内容としては、別アプリと当アプリのappleidが一致している時、Gmailを取得してくる。
取得してきたGmailをGmailBOXに格納したいです。
2つ目のawaitのあたりでエラーとなって、赤線が出力されてしまっています。
awaitを外してみると、Uncaught (in promise) KintoneRestAPIError: [404] [GAIA_RE01] 指定したレコードが見つかりません。 と出力されてしまっています。
どのようにしたらよろしいでしょうか。
ご教授願います。
(function () {
'use strict';
kintone.events.on(['app.record.detail.show', 'app.record.create.submit'], async (e) => {
const APP_ID = 5;
const record = e.record;
const APPLE = record.lbc_office_id.value;
const query = 'my_apple_id = "' + APPLE + '"'
// 一致する時、条件を指定する。
const appleID = {
'app': APP_ID,
'query': query,
};
console.log(appleID);
// レコード一括取得のために、recordsにする。
await kintone.api(kintone.api.url('/k/v1/records', true), 'GET', appleID, (resp) => {
console.log(resp);
// 当アプリとAPP_IDの条件が一致する時、GmailAddressを取得して来る。
let Gmail = resp.records[0]['GmailAddress'].value
window.alert(Gmail + ' を取得しました');
const parameter = {
app: kintone.app.getId(),
id: Gmail,
record: {
GmailBox: {
value: Gmail
}
}
}
// 当アプリのフィールドをセットする。
let GmailBOX = record['GmailBox'].value;
const client = new KintoneRestAPIClient();
console.log(parameter);
if (!GmailBOX) {
try {
await client.record.updateRecord(parameter);
window.alert('Gmailの取得・更新に成功しました。');
} catch (error) {
window.alert('Gmailの取得・更新に失敗しました。');
} finally {
return e;
}
} else {
return e;
}
});
});
})();
1件のコメント
awaitがエラーになっているのは、async function内で使われていないからです。またAPI処理をasync/awaitで実行する場合は同期的に書いた方が良いでしょう。
↓
APIがエラーになっているのは
この部分(リクエストボディ)のidの指定に問題があるのではないかと思います。
idにはレコード番号を指定する必要があるので、Gmailという変数(APIで取得したレコードのGmailAddressというフィールドの値)は恐らく違うのではないかと思います。
リクエストボディについてはこちら を参考にして下さい。