【SharePoint Online】タスクリストをスクリプトから承認/却下する【Javascript】

こんにちは。
今回は、企業では意外と使われている(嘘)
タスクリストのアイテムを承認/却下するためのコードを記事にしていきます。
アイテムのEdit Formからしか承認/却下ができないので、
Disp Formから承認できるように実装していきましょう。

ソース

まずはURLのクエリからIDを取得するための関数を定義しておきましょう。

function GetItemId(){
    var arg = new Object;
    var pair=location.search.substring(1).split('&');
    for(var i=0;pair[i];i++) {
        var kv = pair[i].split('=');
        arg[kv[0]]=kv[1];
    }
    return arg['ID'];
}

location.search.substring(1)としているのは、先頭の「?」が不要なためです。

それでは続いて承認するための関数を定義します。

function approveTask(listTitle,itemId){
    var ctx = new SP.ClientContext.get_current();
    var list = ctx.get_web().get_lists().getByTitle(listTitle);
    var item = list.getItemById(itemId);
    item.set_item('Completed',true);
    item.set_item('PercentComplete',1);
    item.set_item('Status','完了');
    item.set_item('WorkflowOutcome','承認');
    item.update();
    ctx.executeQueryAsync(
        function() {
            console.log("Success");
        }, 
        function(sender, args) {
            console.log("Failed");
            console.log(args);
        }
    )
}

WorkflowOutcomeに関しては、環境によって”承認済み”だったりするので環境を確認しましょう。
関数自体はこれだけで正しく稼働するはずです。
続いて却下ですが、これはプロパティを変更してあげるだけです。


// 却下
function rejectTask(listTitle,itemId){
    var ctx = new SP.ClientContext.get_current();
    var list = ctx.get_web().get_lists().getByTitle(listTitle);
    var item = list.getItemById(itemId);
    item.set_item('Completed',true);
    item.set_item('PercentComplete',1);
    item.set_item('Status','完了');
    item.set_item('WorkflowOutcome','却下');
    item.update();
    ctx.executeQueryAsync(
        function() {
            console.log("Success");
        }, 
        function(sender, args) {
            console.log("Failed");
            console.log(args);
        }
    )
}

リボンメニューにスクリプトを仕込む

さて、あとは以前書いた「【SharePoint Online】リボンメニューにJavascriptを仕込む【SharePoint Designer】」を利用してリボンに仕込むだけです。
簡単ですね。

終わりに

今回は簡単ですが以上となります。
リボン以外にも、All Itemで選択したアイテムを承認するなんかも便利かもしれませんね。

それではまた。