自分のタスク管理について

a_129
Mega Guru
// ヘッダーメニューのドロップダウンに30件まで表示
var max = 30;
var t = data;
data.count = 0;
var items = data.items = [];

var user = gs.getUser().getID();//ユーザ情報取得
// items.record_watchersを使用して、ドロップダウン カウントを更新するタイミングをヘッダーに指示
items.record_watchers = [];
items.record_watchers.push({'table':'sn_hr_core_task','filter':'assigned_to=' + user.toString() + 'state=10^EQ' });//アサイン先が自分かつステータスが準備完了

var gr = new GlideRecord('sn_hr_core_task');//人事タスクテーブル
gr.addQuery("assigned to", user);//アサイン先が自分
gr.addQuery("state", "10");//ステータスが準備完了
gr.orderByDesc('sys_updated_on');//更新順
gr.setLimit(max);
gr.query();

//プルダウン表示タイトルの指定
while (gr.next()) {
  var a = {};
  var title = gr.short_description.toString();//タイトルに概要説明を指定
  addCI(title, gr.sys_id);
}

//リンク先の指定
function addCI(title, query) {
    data.count++;
    var link = {};
    link.title = title;
    link.type = 'link';
    link.href='?id=hrm_todos_page'; //タスクページを開く
    items.push(link);
}
//short_description概要説明

現在、上記のスクリプトを使用して、ポータル画面のヘッダーに、自分のタスクの通知を表示し、タスクの管理を行おうとしています。

ですが現状、自分以外のユーザーのタスクも表示されてしまいます。

自分のタスクのみを表示するには、どうしたら良いでしょうか。

ご教授頂けると幸いです。

 

 

1 件の受理された解決策

Hitoshi Ozawa
Giga Sage
Giga Sage

aさん、

試していませんが次のようにスクリプトを修正しました。

(function(data) {
    // ヘッダーメニューのドロップダウンに30件まで表示
    var max = 30;

    var user = gs.getUserID(); //ユーザ情報取得
    var grInfo = {
        'table': 'sn_hr_core_task',
        'filter': 'assigned_to=' + user.toString() + 'state=10^EQ'
    }; //アサイン先が自分かつステータスが準備完了

    var gr = new GlideRecord('sn_hr_core_task'); //人事タスクテーブル
    gr.addQuery("assigned to", user); //アサイン先が自分
    gr.addQuery("state", "10"); //ステータスが準備完了
    gr.orderByDesc('sys_updated_on'); //更新順
    gr.setLimit(max);
    gr.query();

    //プルダウン表示タイトルの指定
    var items = [];
    while (gr.next()) {
        var title = gr.short_description.toString(); //タイトルに概要説明を指定
        items.push({
            title: title,
            type: 'link',
            href: '?id=hrm_todos_page' //タスクページを開く
        });
    }
    data.record_watchers = [grInfo];
    data.omitBadge = false;
    data.items = items;
    data.count = items.length;
})(data);

元の投稿で解決策を見る

4件の返信4

Hitoshi Ozawa
Giga Sage
Giga Sage

aさん、

試していませんが次のようにスクリプトを修正しました。

(function(data) {
    // ヘッダーメニューのドロップダウンに30件まで表示
    var max = 30;

    var user = gs.getUserID(); //ユーザ情報取得
    var grInfo = {
        'table': 'sn_hr_core_task',
        'filter': 'assigned_to=' + user.toString() + 'state=10^EQ'
    }; //アサイン先が自分かつステータスが準備完了

    var gr = new GlideRecord('sn_hr_core_task'); //人事タスクテーブル
    gr.addQuery("assigned to", user); //アサイン先が自分
    gr.addQuery("state", "10"); //ステータスが準備完了
    gr.orderByDesc('sys_updated_on'); //更新順
    gr.setLimit(max);
    gr.query();

    //プルダウン表示タイトルの指定
    var items = [];
    while (gr.next()) {
        var title = gr.short_description.toString(); //タイトルに概要説明を指定
        items.push({
            title: title,
            type: 'link',
            href: '?id=hrm_todos_page' //タスクページを開く
        });
    }
    data.record_watchers = [grInfo];
    data.omitBadge = false;
    data.items = items;
    data.count = items.length;
})(data);

ご回答ありがとうございます。

こちらのスクリプトで検証させて頂いたところ、ユーザーロール「admin」を持っていないユーザーは、自分のタスクのみの表示が可能だったのですが、ユーザーロール「admin」を持っているユーザーは、他のユーザーのタスクも表示されてしまいます。

これはスクリプト以外の設定などに、原因があるのでしょうか?

スクリプト-バックグラウンドからスクリプトを実行してみてください。

    var user = gs.getUserID();
    var gr = new GlideRecord('sn_hr_core_task'); //人事タスクテーブル
    gr.addQuery("assigned_to", user); //アサイン先が自分
    gr.addQuery("state", "10"); //ステータスが準備完了
    gr.orderByDesc('sys_updated_on'); //更新順
    gr.setLimit(max);
    gr.query();

    //プルダウン表示タイトルの指定
    var items = [];
    while (gr.next()) {
        var title = gr.short_description.toString(); //タイトルに概要説明を指定
        gs.info('number:' + gr.getValue('number') + ' description:' + gr.getValue('short_description') + ' user:' + gr.assigned_to.user_name); 
    }

バックグラウンドで実行したところ、正常にユーザー情報を取得できていました。

有難う御座います。