kintone 앱에서 하위 테이블의 공백 레코드를 삭제하고 저장하려고했습니다.

0. 소개



이전에 여기 게시물을 시도했지만,
  • kintone 앱에서 날짜를 입력하고 다른 필드에 값을 자동으로 입력해 보았습니다. - Qiita

  • kintone 앱에서,
    하위 테이블을 설정하고 레코드를 만들고 편집하면,
    블랭크 레코드라도…
    서브 테이블에 반드시 레코드가 하나 저장되어 버리는 것 같기 때문에,
    레코드를 저장할 때 하위 테이블의 공백 레코드를 삭제하고 싶습니다.

    라고 생각해 보았습니다.

    1. JavaScript 파일 만들기


  • 다음 JavaScript 파일을 만들고 다음 부분을 수정합니다.
  • [서버의 폴더 코드 이름] : 서브 테이블의 필드 코드 이름
  • ※ 이후는, 서브 테이블안의 항목의 필드 코드로, 블랭크 레코드인가 판정해, 삭제하는 조건이 됩니다.
  • ![サブテーブルのフィールドコード名][i].value.[サブテーブル項目①のフィールドコード名].value
  • [サブテーブルのフィールドコード名][i].value.[サブテーブル項目②のフィールドコード名].value.length == 0
  • 배열의 경우 위의 조건식입니다.

  • ![サブテーブルのフィールドコード名][i].value.[サブテーブル項目③のフィールドコード名].value


  • Kintone_ClearSubTableBlankRecord.js
    //
    // サブテーブル空白レコードクリアプログラム
    //
    // Copyright (c) 2018 KUSOKAMAYAROU
    //
    // Licensed under the MIT License
    //
    
    (function () {
        "use strict";
    
        // 「【Kintone】Javascriptカスタマイズ event(インベト)を使いこなせ!」
        // http://infosys.tokyo/kin_171030
        // 「Javascriptで指定した配列の要素を削除する - Qiita」
        // https://qiita.com/Sekky0905/items/598b47fea2106b8c140e
    
        kintone.events.on(['app.record.create.submit','app.record.edit.submit','app.record.index.edit.submit'], function(event) {
            var record = event.record;
            var [サブテーブルのフィールドコード名] = record.[サブテーブルのフィールドコード名].value;
            for (var i = [サブテーブルのフィールドコード名].length - 1; i > -1; i--) {
                if (![サブテーブルのフィールドコード名][i].value.[サブテーブル項目のフィールドコード名].value
                    && [サブテーブルのフィールドコード名][i].value.[サブテーブル項目のフィールドコード名].value.length == 0
                    && ![サブテーブルのフィールドコード名][i].value.[サブテーブル項目のフィールドコード名].value) {
                    [サブテーブルのフィールドコード名].splice(i, 1);
                }
            }
            return event;
        });
    
    })();
    

    2. JavaScript 파일 업로드


  • 먼저 앱 설정 화면을 열고 설정 탭에서 JavaScript/CSS로 사용자 정의 링크를 클릭합니다.



  • "JavaScript/CSS로 사용자 정의"화면이 열리면 "PC 용 JavaScript 파일"의 "업로드하고 추가"버튼을 누르고 만든 JavaScript 파일 (Kintone_ClearSubTableBlankRecord.js)을 업로드합니다.


  • 99. 하마리 포인트


  • 그렇게 곤란한 일은 없었습니다만… ,

  • 블랭크 레코드인지 판정해, 삭제하는 조건으로, 배열의 경우의 조건식에 다소 시간을 먹었습니다.

  • XX. 요약



    kintone을 사용하면,

    의외로 이런 세세한 기능을 원합니다.

    참고가 되면♪

  • ※ 참고 :
  • 【Kintone】Javascript 커스터마이즈 event(인베트)를 잘 다루어라!
  • Javascript로 지정된 배열의 요소 삭제 - Qiita

  • 좋은 웹페이지 즐겨찾기