9
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

kintone 2Advent Calendar 2020

Day 3

アプリ内検索に入力された検索ワードを調べたい

Last updated at Posted at 2020-12-02

はじめに

自己紹介です

main_image.jpg

  • イシイケンタロウです
  • 刷毛をつくっている会社の兼業情シスです
  • kintone認定資格は3つとも取得済です

アソシエイト.png アプリデザイン.png カスタマイズ.png

  • その他にITストラテジストやシステム監査技術者などの国家資格をいくつか取得しています
  • kintoneのカスタマイズは社内向けのみで、プラグインは作ってません(作れません)
  • kintone cafe japan のおかげさまで 標準機能で曜日自動計算 をたくさん見ていただいて感謝です

やりたいこと

アプリ内検索でどのような単語で検索されているのかを知りたい

考え方

  • 残念ながら検索結果画面が表示されたときのイベントはありません
  • 代替案として検索結果からレコード詳細画面を開いたときに、検索ワードとurlを別のアプリに新規登録して調べます
  • ↓ の url 例だと「〇〇〇〇〇」が検索ワードにあたる部分です
https://XXXXX.cybozu.com/k/XXX/show#record=XXX&s.keyword=〇〇〇〇〇&s.app=XXX

完成!

メディア1.gif

検索対象アプリ

  • なんでもいいのですが、質問を投稿し、コメントで回答するアプリにしました
  • アプリ内検索は添付ファイルの中身(の一部)やコメントも検索してくれます
フィールド名 / フィールドコード フィールドタイプ
質問内容 文字列(複数行)
添付ファイル 添付ファイル

アクセスログアプリ

  • 1アクセスごとに1レコードを新規登録します
  • 今回はシンプルにしましたが、検索ワード以外にもアプリIDを始めとした kintoneの関数 で取れる値ならなんでも取得できます
  • 他には userAgent などの navigator オブジェクトのプロパティを取得しておくとのちのち便利かもです
フィールド名 / フィールドコード フィールドタイプ
keyword 文字列(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();
});



おわりに

  • 2回デコードしなければ検索ワードが出てこないということに気づくまで時間かかりました・・・
  • 検索ワードとは関係なく、単なるアクセス解析として app.record.index.showportal.show に書いても面白いですきっと
  • そこからもうちょっと頑張れば一覧IDやカテゴリIDもとれる気がします(やってない)
  • そしていつものですが、塗装用ローラーもつくってます

main_image (1).jpg

9
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?