Posted at

kintone誰が読んだの?機能


そのレコード誰が読んだのかわからない;;

おひさしぶりですうぇるです。

先日、「投稿したレコードを誰が読んだか確認したい!」と上司から司令をいただきました。


アプリの用意

image.png

アプリID:717

フィールド名
フィールドの種類
フィールドコード

文字列 (1行)
文字列(1行)
文字列_1行

読んだ人
ユーザー選択
既読


JavaScriptでカスタマイズ

イベントハンドラは一回変数に

    const event1 = ['app.record.create.show','app.record.edit.show'];

const detail = 'app.record.detail.show';
const index = 'app.record.index.show';

読んだ人フィールドは編集できないように

kintone.events.on(event1, function(event){

//読んだ人フィールドは入力不可
const r = event.record;
r['既読'].disabled = true;
return event;
});

①自分のユーザ名が既読に入っているかチェック

②入っていたら処理をやめる

②’入っていなかったら今入っている人をユーザ選択フィールドに合わせてobjに格納

③自分のユーザ名をobjに追加

④apiでPUT

kintone.events.on(detail, function(event){

//既読の仕組みはここ
const r = event.record;
const User = kintone.getLoginUser();
for(var num = 0; num < r['既読']['value'].length; num++){
if(r['既読']['value'][num]['code'] === User.code){
return ;
}
}
//オブジェクト作っておく
var obj = {};
obj['app'] = 717;
obj['id'] = r['レコード番号'].value;
obj['record'] = {};
obj['record']['既読'] = {};
obj['record']['既読']['value'] = [];

//今入っている人を数えて一緒に入れる
for (var i = 0; i < r['既読']['value'].length; i++) {
obj['record']['既読']['value'][i] = {};
obj['record']['既読']['value'][i]['code'] = {};
obj['record']['既読']['value'][i]['code'] = r['既読']['value'][i]['code'];
}

//ログインユーザを読んだ人フィールドに追加
obj['record']['既読']['value'][r['既読']['value'].length] = {};
obj['record']['既読']['value'][r['既読']['value'].length]['code'] = {};
obj['record']['既読']['value'][r['既読']['value'].length]['code'] = User.code;
kintone.api('/k/v1/record', 'PUT', obj, function(resp){
console.log(obj);
});
});

ちょっとベタベタなコードになってしまいましたが、

取り急ぎは上司の要望は答えられました!!