おはようほしがきおじさん
昨日は丸1日、kintoneと戯れてました
昨日は丸1日、kintoneと戯れてました。
。
戯れてた、
といってもシステムを作っていたので、
遊んでいたわけではありません。
。
外注で受けている、
作業時間の登録・集計・チェックおよび、、、、
月で締めて、
振込まで出来るように、
あわよくば全銀データフォーマットまで作成して、
振込の一歩手前まで行えるよう、レコード作成の準備までおこなっていました。
。
あと少し、
まで到達できました。
全銀フォーマットはこちらのプラグインを使うことで、
出力することが出来ます。

。
これをすることで、
業務報告後の振込などが出来るようになります。
。
今なんと、全体で6時間かかっているそうですから、
なんとしてでも短縮化したいものです。
。
ユーザー名と年月で集計したい
弊社であれば、ユーザー名と出勤簿が必ず1対1ではありません。
その理由は週数回しか来られないパートさんまで、kintoneのアカウントを発行する必要がないからです。
。
しかしながら、
このシステムではすべてのユーザがkintoneアカウントを発行出来ています。
これを前提すると、
自分がログインしたときに、自分の出勤簿や、
年月で締めたレコードを集計することが出来るのですが、、、、
ここでまた問題です。
。
集計方法はこちら。
。
を使おうとしていたのですが、、、、
ログインユーザ―名のテキストを文字列(1列)フィールドにセットできません。
計算フィールドにも、
文字列(1列)フィールドでも、
ログインしたユーザーの名前をテキスト形式で自動で取得できません。
ので、
結局JavaScriptで書くことにしました。
。
もう最近はそれすらも、Geminiで書かせております。
const record = event.record;
const val1 = record.ログインユーザ.value[0].name;
const val2 = record.種別.value;
record.ログインユーザ_自動.value = val1;
const dateValue = new Date(record.日付.value);
const year = dateValue.getFullYear();
// getMonth() returns 0-11, so add 1 for actual month
const month = (dateValue.getMonth() + 1).toString().padStart(2, ‘0’);
record.ログインユーザ・年月.value = val1 + `${year}${month}` + val2; // Set the yyyymm string to the target field
。
画面上の「ログインユーザ」フィールドと、種別フィールドを取得して、年月を付与する。
という内容なんですが、、、
ログインユーザ_自動フィールドに「はやし」
ログインユーザ・年月フィールドに「はやし202506種別1」
と自動で設定するようにします。
。
年月の集計フィールドでも同様に、
JavaScriptをセットすることで、
集計側アプリ.ログインユーザ・年月 = データ側アプリ.ログインユーザ・年月
をキーに関連レコードを取得し、
その集計した値を取得するようにすれば、、、
出来るようになります。
。
kintoneは何でも出来る!と思わない
kintoneは素晴らしいシステムで、
自由度が高すぎます。
ゆえに、何でも出来る!
と思いますが、私はそれは出来ないときがあると肝に銘じています。
。
例えば、
画面上のラジオボタンを文字列に変換する場合は
フィールド1 & ラジオボタン & DATE_FORMAT(…)
なんてやれば出来るのですが、
これがチェックボックスの場合は配列データで来るために、
フィールド1 & IF(CONTAINS(チェック,”aa”), “aa”, IF(CONTAINS(チェック,”bb”),”bb…) & DATE_FORMAT(…)
と、画面上のチェックボックスに
“aa”が含まれている場合は “aa”を返すというように、チェックボックスの内容をハードコードすることになるので、プラグインなどを使わない場合はなかなか難義な状態です。
。
これが数字の場合だと、
ラジオボタン
0、1000、2000,3000、4000
の値をそのまま数字に変換してハードコードせずに、
ラジオボタンが1000の場合は、数字として1000を加算する、
ときは
IF(ラジオボタン=”1000”,1000, IF(ラジオボタン=”2000”,2000,…))
とハードコードする必要があり、そのまま数値として扱えないので、
プラグインを使う必要がある、というわけです。
。
なので今回の場合は、特殊な「ユーザー」フィールドでしたので、
難義でした。
。
可変的に関連レコードを変えられる
そのお陰で、、、、
(1)作業年月を指定すると、
(2)関連レコードが自動的に変わる
(3)報酬金額が自動集計
(4)金額を手入力、加算率を設定、調整を入力
(5)振込金額が確定したら、「全銀データ作成」ボタンを押すと、CSVが出力される

。
というものです。
関連レコードの集計値を、別のフィールドにコピーするには、
Attazoo+のプラグインを別途購入する必要があるので、今のところはお金をかけないでいきます。
しかも加算率、7.5%といったところはハードコードなので
IF(加算率=”7.5%”,7.5%, IF(加算率=”10%”,10%,…))
といった内容にしています。
。
1レコードのキーが、ユーザー名となっているため、
前述のJavaScriptが生きてくる、というわけです。
。
既存システムからリプレイスの場合は
それを既存システムがある場合、
それをkintoneにリプレイスする場合は、、、、
既存システムの数値と
kintone側の数値が、
まったくもって一致していないといけません。
。
その整合性のチェックに手間取っていました。
それすらも画面上をチェックするんじゃなく、
ExcelでDiffとってチェックするなど、ツールにチェックさせます。
。
単にkintone開発のみならず、
・既存システムのデータ移行
・数値のチェック
・集計結果のチェック
といったことが、必要になってくる、
というわけです。
。
気が付いたら夕方になっていました。。。。
1日がかりでしたね汗。
。
そして飲んでいたら気が付いたら月曜の朝になっていた(笑)
というわけです。
そんな1週間がまたやってきます。
今週もよろしくお願いいたします!
コメントを残す