【サブテーブル行追加】app.record.create.submit で return event しても値が変更されない

お世話になります。

今回は表題の通りjavascript APIを使用したサブテーブルの行追加で困っていることがあります。

解決方法ご教授お願い致します。

■関連フィールド

工事日程テーブル(サブテーブル)

以下工事日程テーブル内フィールド

工事開始日時(日時)

工事終了日時(日時)

当日担当者(ユーザー選択)

外注(ラジオボタン)

カレンダーID(数値)

 

■背景・実現したいこと

サブテーブルを1行ごとにチェックし、「工事開始日時」から「工事終了日時」までが24時間以上であれば日数のまたぎ分だけ行を追加していく。

例】工事開始日時:7/15 08:00 → 工事終了日時:7/17 17:00

1行目 工事開始日時:7/15 08:00 → 工事終了日時:7/15 17:00

2行目 工事開始日時:7/16 08:00 → 工事終了日時:7/16 17:00

3行目 工事開始日時:7/17 08:00 → 工事終了日時:7/17 17:00

 

■エラー内容

エラーは出ていませんがレコード保存後に書き換えた値が反映されません。

return event のまえに console.log で event.record の内容を確認していますがそこは問題なさそうです。(おそらく)

関係ないとは思いますが一応スペース内で作っているアプリです。

 

以下コード全文です。

解決方法など是非ご教授お願い致します。

(function() {
  'use strict';
  kintone.events.on(['app.record.create.submit','mobile.app.record.create.submit','app.record.edit.submit','mobile.app.record.edit.submit'], function(event) {
    let table = event.record.工事日程テーブル.value;
    
    event.record.工事日程テーブル.value = [];////サブテーブルを空に
    
    table.forEach(row =>{
      let start = moment(row.value.工事開始日時.value);
      let end = moment(row.value.工事終了日時.value);
      // let endTime = moment(row.value.工事終了日時.value).hour();
      let diff = end.diff(start, 'hours');
      let startDate = moment(row.value.工事開始日時.value).date();
      end = end.date(startDate);
      let managers = [];
      
      row.value.当日担当者.value.forEach(val =>{
        delete val.name;
        managers.push(val);
      });
      
      if(diff >= 24){
        let loopTimes = Math.floor(diff / 24);
        for(let i = 0; i <= loopTimes; i++){
          let startClone = start.clone();
          let endClone = end.clone();
          startClone = startClone.add(i, 'd');
          endClone = endClone.add(i, 'd');
          let pushRow = {
            value:{
              工事開始日時:{
                type: 'DATETIME',
                value: startClone.format("YYYY-MM-DDTHH:mm:ssZ")
              },
              工事終了日時:{
                type:'DATETIME',
                value: endClone.format("YYYY-MM-DDTHH:mm:ssZ")
              },
              当日担当者:{
                type:'USER_SELECT',
                value: managers
              },
              外注:{
                type:'RADIO_BUTTON',
                value:row.value.外注.value
              },
              カレンダーID:{
                type:'NUMBER',
                value:0
              }
            }
          }
          event.record.工事日程テーブル.value.push(pushRow);
        }
      }else{
        let pushRow = {
          value:{
            工事開始日時:{
              type: 'DATETIME',
              value: start.format("YYYY-MM-DDTHH:mm:ssZ")
            },
            工事終了日時:{
              type:'DATETIME',
              value: end.format("YYYY-MM-DDTHH:mm:ssZ")
            },
            当日担当者:{
              type:'USER_SELECT',
              value: managers
            },
            外注:{
              type:'RADIO_BUTTON',
              value:row.value.外注.value
            }
          }
        }
        event.record.工事日程テーブル.value.push(pushRow);      
      }
    });
    console.log(event.record);
    
    return event;
  });
})();

同じフィールド生成して、momentjsのCDNとこちらのコードそのまま実行したところ24時間間隔で行数分切り分けて生成してくれたので、アプリの編集権が周りですかね。

 

テスト的にこちらでテーブル1行目のカレンダーIDの更新自体はできますでしょうか?

(function () {
    'use strict';
    kintone.events.on(['app.record.create.submit', 'mobile.app.record.create.submit', 'app.record.edit.submit', 'mobile.app.record.edit.submit'], function (event) {
        let table = event.record.工事日程テーブル.value;
        table[0].value["カレンダーID"].value = 9999
        return event;
    });
})();

nabe様

返信ありがとうございます。

そちらでは正常に動作したのですね!うれしいです!

頂いたコードで確認しましたがカレンダーIDの更新はされませんでした、、、

ちなみに編集権限ですが、アプリ、レコード、フィールドどのレベルでも制限は設けておらず、原因がますますわからなくなってきました、、、

上記のreturn eventの直前に

console.log(event.record.工事日程テーブル.value[0].value.カレンダーID.value)

を追加していただくと恐らく9999がコンソールに出てくると思います。が、そうなるとスクリプトは動いてるんですよねぇ・・・

スペースの場合の権限他ちょっと浮かばなかったので、あとは他のアプリを利用で今回のアプリをスペース外にコピー作って試したときにどうなるかですかね。

あとはアプリ権限のグループの欄を変更してしまっているか

nabe様
コンソールで9999確認出来ました。
一旦スペース外に作りなおして動作確認してみます。
ありがとうございました!

スペース外に作り直して実行したところ正常に動作しました。

ありがとうございました!