kintone のカスタマイズファイルを設定するとき、いちいちアプリの設定画面からファイルを指定するのって面倒です。さすがにこれについては、 kintone がカスタマイズ用の js ファイルをアップロードするためのツールが提供してくれています。
customize-uploader - cybozu developer network
なので、これを使って簡単にアップロードしてみます。
設定
まずは、設定します。
PS D:\work\tmp\kintone_tutorial\revert_live_server> npm install --save-dev @kintone/customize-uploader added 183 packages, and audited 301 packages in 16s 71 packages are looking for funding run `npm fund` for details found 0 vulnerabilities PS D:\work\tmp\kintone_tutorial\revert_live_server>
インストールできたら、初期化して、カスタマイズファイルのアップロード用の設定ファイルを作成します。
PS D:\work\tmp\kintone_tutorial\revert_live_server> npx kintone-customize-uploader init ? アプリIDを入力してください: nnn ? カスタマイズの適用範囲を選択してください: ALL dest/customize-manifest.json を生成しました PS D:\work\tmp\kintone_tutorial\revert_live_server>
nnn の部分は実際のアプリID(数値)を入力します。作成されたファイルのファイル名は必要に応じて変更することもできます。
作られたファイルのひな型はこんな感じです。
{ "app": "nnn", "scope": "ALL", "desktop": { "js": [], "css": [] }, "mobile": { "js": [], "css": [] } }
webpack でバンドルしたファイルを指定するならば
"desktop": { "js": ["dist/kintone-revert-test.js"], "css": [] },
のように、バンドル後に作成されるファイルを指定しておきます。
アップロード
では、実際にアップロードしてみましょう。
アップロード前は、下記のように VSCode Live Server のファイルを参照するようにしています。
この状態で、アップロードすると
PS D:\work\tmp\kintone_tutorial\revert_live_server> npx kintone-customize-uploader --base-url https://kintoneのドメイン名.cybozu.com --username mail@example.com --password ログインパスワード dest/customize-manifest.json カスタマイズのアップロードを開始します dist/kintone-revert-test.js をアップロードしました! JavaScript/CSS ファイルをアップロードしました! JavaScript/CSS カスタマイズの設定を変更しました! 運用環境への反映の完了を待っています... 運用環境への反映の完了を待っています... 運用環境への反映の完了を待っています... 運用環境に反映しました! PS D:\work\tmp\kintone_tutorial\revert_live_server>
のように実行できます。実行時、マニフェストファイルのファイル名を指定するので、デフォルト以外の名前にしていても問題ありません。
実行後に、アプリの設定画面を見ると、
のように、アップロードされたファイルが指定されているのがわかります。
複数アプリでのアップロード
なかなかいい感じですね。
でも、 kintone が提供してくれている customize-uploader は、複数のアプリに対してまとめてアップロードするということができません。なので、複数アプリに対してカスタマイズファイルをアップロードしたければ、アプリごとにマニフェストファイルを作成し、それを引数にとるシェルスクリプトを実行することで、コマンド一つで一括して一連のアプリのカスタマイズファイルをアップロードできるようにすることができます。
たとえば、一例として WSL の bash を利用したシェルスクリプトだと、フォルダ構成をこんな感じにしておいて
bin ディレクトリ以下に、下記の2ファイルを作成します。
kintone_upload.sh : 1アプリごとのアップロードを処理するシェルスクリプト
#!/bin/bash # # kintone-customize-uploader を用いた、カスタマイズファイルのアップロード # # 呼び出し時に、ユーザー名とパスワードを入力すれば、manifest.json # に従って、アップロードされる # # 2023/12/18, Junichi MORI BASE_URL="https://kintoneのドメイン名.cybozu.com" script_dir=$(cd $(dirname $0); pwd) kintone_root_dir=$(dirname $script_dir) if [ $# != 3 ] then echo "Usage : kintone_upload manifest_json_dest_file_name user_name password" exit 1 fi MANIFEST_FN=$1 USER_NAME=$2 PASSWORD=$3 # kintone_root_dir からの相対パスに変更 MANIFEST_FN=`realpath --relative-to=${kintone_root_dir} ${MANIFEST_FN}` # kintone_root_dir にて処理を行う cd ${kintone_root_dir} ./node_modules/.bin/kintone-customize-uploader --base-url ${BASE_URL} --username ${USER_NAME} --password ${PASSWORD} ${MANIFEST_FN}
kintone_upload_all.sh : 指定したフォルダ以下にあるマニフェストファイルをすべてアップロードするシェルスクリプト
#!/bin/bash # # kintone-customize-uploader を用いた、カスタマイズファイルの一括アップロード # # 呼び出し時に、ユーザー名とパスワードを入力すれば、指定したフォルダ内の # 全てのマニフェストファイルに従って、アップロードされる # # 2023/12/18, Junichi MORI script_dir=$(cd $(dirname $0); pwd) kintone_root_dir=$(dirname $script_dir) if [ $# != 3 ] then echo "Usage : kintone_upload_all manifest_folder username ppassword" exit 1 fi MANIFEST_FOLDER=$1 USER_NAME=$2 PASSWORD=$3 # kintone_root_dir からの相対パスに変更 MANIFEST_FOLDER=`realpath --relative-to=${kintone_root_dir} ${MANIFEST_FOLDER}` # kintone_root_dir にて処理を行う cd ${kintone_root_dir} for fn in `ls -1 ${MANIFEST_FOLDER}/*.json` do echo ${script_dir}/kintone_upload.sh $fn ${script_dir}/kintone_upload.sh $fn $USER_NAME $PASSWORD done
シェルスクリプトなので、 wsl の bash から実行します。
mor@マシン名:サンプルフォルダ名/revert_live_server/bin$ ./kintone_upload_all.sh ../dest ユーザー名 ログインパスワード サンプルフォルダ名/revert_live_server/bin/kintone_upload.sh dest/customize-manifest.json カスタマイズのアップロードを開始します dist/kintone-revert-test.js をアップロードしました! JavaScript/CSS ファイルをアップロードしました! JavaScript/CSS カスタマイズの設定を変更しました! 運用環境への反映の完了を待っています... 運用環境への反映の完了を待っています... 運用環境への反映の完了を待っています... 運用環境に反映しました! mor@マシン名:サンプルフォルダ名/revert_live_server/bin$
マニフェストファイルが複数あれば、その分だけ kintone_upload.sh が呼び出されて、一括してアップロードできます。
まとめ
アプリ数が少なければ、 直接 customize_uploader を呼べばいいし、アプリ数が多い場合は、上記の例のように簡単なシェルスクリプトを書いてやれば、一括してアップロード処理を行うことができます。いいですねー。
ちなみに、このサンプルを入れてあるフォルダ名が revert_live_server となっているのが、ちょっと気になるかもしれません。これは、開発した js ファイルをアップロード後、再度 Live Server 環境に戻すときのサンプルも兼ねているためです(これもいちいちアプリごとに指定する必要があるんですよね)。これについてもそのうち記事にまとめたいと思います。