kintoneレコードで年齢が毎日更新されるwin7用バッチファイルを作ってみた。

kintoneレコードで年齢が毎日更新されるwin7用バッチファイルを作ってみた。

kintoneが生年月日から年齢を計算出来ないので、javascriptで出来るようにしてみた。で、レコード入力時や表示する時には自動計算してくれるようになった。
が、30歳以上・以下みたいな検索をしたい場合は、これだと出来ない(あくまで入力補助や表示だけなので、レコードの年齢は自動更新されない)
こういう仕様をみると、kintone=「CSVの入力フォーム&そのWebサーバを簡単に作れるだけ」っていう現実をひしひしと感じるな・・・。

嘆いていもしょうがないので、年齢を自動更新してくれるバッチファイルを作ってみた。
kintone コマンドラインツールの使い方

@echo off
echo %time%
set APP_NO=
set SUB_DOMAIN=
set API_TOKEN=
rem 会員管理アプリから全レコードをダウンロード
echo kintone downloading...
cli-kintone.exe -a %APP_NO% -d %SUB_DOMAIN% -t %API_TOKEN% -c "$id,年齢" -e sjis > download.csv
rem アップロードファイルを初期化
echo "$id","年齢">upload.csv
rem 本日の日付を取得
set TodayDate=%date:/=%
rem 遅延環境変数の展開を有効化
setlocal enabledelayedexpansion
echo age calculating...
for /f "skip=1 tokens=1,2,3* delims=," %%i in (download.csv) do (
set yyyy_mm_dd=%%~k
set birth_date=!yyyy_mm_dd:-=!
SET /a age=TodayDate-!birth_date!
set /a age=!age!/10000
echo %%i,!age!>> upload.csv
)
rem 遅延環境変数の展開を無効化
endlocal
rem 計算済みの年齢をkintoneアプリへアップロードする
echo kintone uploading...
cli-kintone.exe -a 56 -d 4qn7v -t 3g7hsNrQu0d1cYGg22q9NhxzaPNdrvsJxnYvsAKY -c "$id,年齢" -e sjis -f upload.csv
echo %time%

実行速度を調べるためにダミーデータをmysqlで作ってみる。
参照URL: https://www.softel.co.jp/blogs/tech/archives/4730

CSV(SJIS)エクスポートして、適当に作ったkintoneアプリに読み込ませる。
batファイルで年齢計算してみたら、所要時間は以下の通り。
1024レコード=約42秒
8192レコード=約300秒

数千~数万件程度なら、起動時のスタートアップに入れたり、タスクスケジューラに入れて、それなりに実用的かな?
※kintone公式のコマンドラインツールは、GO言語のソースを見てみると100件レコード単位で処理しているっぽいので500件単位に修正して、自分でコンパイルしたら早くなるかも…。