From af5f27c8c5dfdc6009ee66989109afbd3c137f4c Mon Sep 17 00:00:00 2001 From: Moriyukina2 Date: Thu, 18 Jul 2024 14:53:04 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=80=A4=E6=8C=BF=E5=85=A5=E3=81=AE?= =?UTF-8?q?=E3=82=B3=E3=83=B3=E3=83=9D=E3=83=BC=E3=83=8D=E3=83=B3=E3=83=88?= =?UTF-8?q?=E3=80=80BUG523=E3=80=80[=E5=80=A4=E6=8C=BF=E5=85=A5]=E6=97=A5?= =?UTF-8?q?=E6=99=82=E3=81=AB=E6=8C=BF=E5=85=A5=E3=81=A7=E3=81=8D=E3=81=AA?= =?UTF-8?q?=E3=81=84=E3=80=80BUG517=E3=80=80[=E5=80=A4=E6=8C=BF=E5=85=A5]?= =?UTF-8?q?=E5=AF=BE=E8=B1=A1=E3=82=A4=E3=83=99=E3=83=B3=E3=83=88=E7=B7=A8?= =?UTF-8?q?=E9=9B=86=E6=88=90=E5=8A=9F=E5=BE=8C=E3=81=AB=E6=8C=BF=E5=85=A5?= =?UTF-8?q?=E3=81=95=E3=82=8C=E3=81=AA=E3=81=84=E3=80=80=E3=81=AE=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/actions/insert-value.ts | 58 +++++++++++++++---- 1 file changed, 47 insertions(+), 11 deletions(-) diff --git a/plugin/kintone-addins/src/actions/insert-value.ts b/plugin/kintone-addins/src/actions/insert-value.ts index b7ae7a2..0ab1d03 100644 --- a/plugin/kintone-addins/src/actions/insert-value.ts +++ b/plugin/kintone-addins/src/actions/insert-value.ts @@ -88,7 +88,8 @@ export class InsertValueAction implements IAction{ let singleDigitMonthDay = inputValue.match(/(\d{4})-(\d{1})-(\d{1})$/);//4桁の数字-1桁の数字-2桁の数字 let singleDigitMonth = inputValue.match(/(\d{4})-(\d{1})-(\d{2})$/);//4桁の数字-1桁の数字-2桁の数字 let singleDigitDay = inputValue.match(/(\d{4})-(\d{2})-(\d{1})$/);//4桁の数字-2桁の数字-1桁の数字 - let dateTime = inputValue.match(/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}).000Z/);//時刻入りのUTCの日付形式 + let dateTimeMilliSecond = inputValue.match(/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}).(\d{2,3})Z$/);//時刻入りのUTCの日付形式(ミリ秒) + let dateTime = inputValue.match(/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})Z$/);//時刻入りのUTCの日付形式 let date; //date型に変換 date = new Date(inputValue); @@ -96,7 +97,7 @@ export class InsertValueAction implements IAction{ //date型変換できたか確認 if(date !== undefined && !isNaN(date.getDate())){ //正規表現チェック確認 - if(twoDigitMonthDay === null && singleDigitMonth === null && singleDigitDay === null && singleDigitMonthDay === null && dateTime === null){ + if(twoDigitMonthDay === null && singleDigitMonth === null && singleDigitDay === null && singleDigitMonthDay === null && dateTime === null && dateTimeMilliSecond === null){ event.record[fieldCode]['error'] = "「"+fieldCode+"」"+"フィールドに入れようとした値は、無効な日付形式です。"; //レコードにエラーを表示 throw new Error("「"+fieldCode+"」"+"フィールドに入れようとした値は、無効な日付形式です。「値を挿入する」コンポーネントの処理を中断しました。"); } @@ -440,16 +441,51 @@ export class InsertValueAction implements IAction{ } } - //条件式の結果がtrueかつ挿入する値が変換できた場合、フィールド(ラジオボタン・ドロップダウン・チェックボックス・複数選択・文字列一行・文字列複数行・リッチエディタ・数値・日付・日時・時刻)にセット - if(conditionResult && (correctFormattedValue || correctValues)){ - //条件式の結果がtureかつ、値を正しい形式に変換できた場合、フィールドに値をセットする - if(correctFormattedValue){ - event.record[fieldCode].value = correctFormattedValue; - //条件式の結果がtureかつ、値を正しい形式(配列)に変換できた場合、フィールドに値(配列)をセットする - }else if(correctValues.length > 0){ - event.record[fieldCode].value = correctValues; + //保存成功イベントの場合、kintone async/await による非同期処理でフィールドに値を挿入する + if(!event.type.includes('success')){ + + //条件式の結果がtrueかつ挿入する値が変換できた場合、フィールド(ラジオボタン・ドロップダウン・チェックボックス・複数選択・文字列一行・文字列複数行・リッチエディタ・数値・日付・日時・時刻)にセット + if(conditionResult && (correctFormattedValue || correctValues)){ + //条件式の結果がtureかつ、値を正しい形式に変換できた場合、フィールドに値をセットする + if(correctFormattedValue){ + event.record[fieldCode].value = correctFormattedValue; + //条件式の結果がtureかつ、値を正しい形式(配列)に変換できた場合、フィールドに値(配列)をセットする + }else if(correctValues.length > 0){ + event.record[fieldCode].value = correctValues; + } } - } + + }else{ + //kintone async/await による非同期処理(保存成功時イベントREST API処理時) + async function updateRecord(fieldCode:string,event:any,insertValue:any) { + return new Promise((resolve, reject) => { + var updatedRecord = { + app: event.appId, + id: event.recordId, + record: {[fieldCode]:{"value":insertValue}} + }; + kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', updatedRecord, (resp) => { + resolve(resp); + }, (error) => { + reject(error); + }); + }); + } + + //条件式の結果がtrueかつ挿入する値が変換できた場合、フィールド(ラジオボタン・ドロップダウン・チェックボックス・複数選択・文字列一行・文字列複数行・リッチエディタ・数値・日付・日時・時刻)にセット + if(conditionResult && (correctFormattedValue || correctValues)){ + //条件式の結果がtureかつ、値を正しい形式に変換できた場合、フィールドに値をセットする + if(correctFormattedValue){ + event.record[fieldCode].value = correctFormattedValue; + //条件式の結果がtureかつ、値を正しい形式(配列)に変換できた場合、フィールドに値(配列)をセットする + }else if(correctValues.length > 0){ + event.record[fieldCode].value = correctValues; + } + } + + //kintone async/await による非同期処理(レコード更新) + await updateRecord(fieldCode,event,correctFormattedValue); + }; result= { canNext:true,