인앱 검색에 입력된 검색어를 확인하고 싶습니다.

8276 단어 금과킨톤

소개



  • kintone Advent Calendar 2020 3 일째 기사입니다
  • 인앱 검색이 어떻게 사용되는지 알고 싶었습니다.
  • 작년은 케이크를 선택하는 앱을 만들었습니다만, 1회 밖에 사용하지 않았습니다.

    자기 소개입니다.




  • 이시 켄타로
  • 브러시를 만드는 회사의 겸 업정 시스입니다.
  • kintone 인증 자격은 3 개 모두 취득되었습니다


  • 기타 IT 전략가 및 시스템 감사 기술자와 같은 일부 국가 자격을 취득했습니다.
  • kintone의 커스터마이즈는 사내 전용이며 플러그인은 만들지 않습니다 (만들 수 없습니다).

  • 킨톤 카페 일본 감사합니다.

    하고 싶은 일



    인앱 검색에서 어떤 단어로 검색되는지 알고 싶습니다.

    사고방식


  • 불행히도 검색 결과 화면이 표시 될 때 이벤트가 없습니다
  • 대안으로 검색 결과에서 레코드 세부 정보 화면을 열 때 검색 단어와 URL을 다른 앱에 새로 등록하고 검사합니다.
  • ↓의 url 예라면 "0000000"이 검색 단어에 해당하는 부분입니다.
    https://XXXXX.cybozu.com/k/XXX/show#record=XXX&s.keyword=〇〇〇〇〇&s.app=XXX
    

    완성!



    표준 기능으로 요일 자동 계산

    검색 대상 앱


  • 뭐든지 좋지만 질문을 게시하고 댓글로 답변하는 앱으로 만들었습니다.
  • 인앱 검색은 첨부 파일의 내용 (의 일부)과 댓글도 검색합니다.



    필드 이름/필드 코드
    필드 유형


    질문 내용
    문자열(여러 줄)

    첨부파일
    첨부파일


    액세스 로그 앱


  • 액세스 당 하나의 레코드를 새로 등록합니다.
  • 이번에는 간단하게 만들었지만 검색 단어 이외에도 앱 ID를 비롯한
  • 그 밖에 userAgent 등의 navigator 객체의 properties 를 취득해 두고 나서 나중에 편리할지도



  • 필드 이름/필드 코드
    필드 유형


    키워드
    문자열(1행)

    accessUrl
    문자열(1행)


    검색 대상 앱에 구현



    액세스 로그 앱의 앱 ID만 다시 씁니다.
    
    // 関数本体
    const postLog = async () => {
    
        // アクセスログアプリのアプリID
        const app = XXX;
    
        // urlの取得
        const url = location.href;
    
        // keywordの抽出(「&s.keyword=」の次の文字から「&s.app」の手前の文字まで)
        let keyword = '';
        if (url.match(/s.keyword/)){
            const indexStart = url.indexOf('&s.keyword=') + '&s.keyword='.length;
            const indexEnd = url.indexOf('&s.app');
            keyword = decodeURI(decodeURI(url.substring(indexStart, indexEnd)));
        }
    
        // アクセスログアプリへの登録
        const paramPost = {
            'app': app,
            'record': {
                'accessUrl': {
                    'value': url
                },
                'keyword': {
                    'value': keyword
                }
            }
        };
        const respPost = await kintone.api(kintone.api.url('/k/v1/record', true), 'POST', paramPost);
    }
    
    // レコード詳細表示イベントから呼び出す
    kintone.events.on('app.record.detail.show', (event) => {
        postLog();
    });
    
    
    
    

    결론


  • 두 번 디코딩하지 않으면 검색 단어가 나오지 않는다는 것을 알기까지 시간이 걸렸습니다 ...
  • 검색 단어와 상관없이 단순한 액세스 분석으로 app.record.index.show 또는 portal.show에 쓰는 것이 흥미 롭습니다.
  • 거기에서도 조금 노력하면 일람 ID나 카테고리 ID도 취할 수 있는 생각이 듭니다(하고 있지 않다)
  • 그리고 평소에도 불구하고 페인트 롤러가 만들어졌습니다

  • 킨톤 함수

    좋은 웹페이지 즐겨찾기