一括申請について

https://developer.cybozu.io/hc/ja/articles/211583223-%E3%83%AF%E3%83%B3%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%81%A7%E4%B8%80%E6%8B%AC%E6%89%BF%E8%AA%8D%E3%82%92%E3%81%97%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86

上記の記事から一括承認をすることはできたのですが、一括申請も行いたいと思い、コードを変更して作業者も指定を行いました。作業者を指定した場合は一括申請を行えたのですが作業者をグループにしたい場合、どのようにすればいいか教えて頂けませんか?

コードは以下の通りです。obj[“assignee”] = “user1”;の部分をグループコードかと思い変更しましたが動きませんでした。

(function() {
    "use strict";
    kintone.events.on("app.record.index.show", function(event) {
        var appId = kintone.app.getId();
        if (event.viewId !== 6457967) {
            return;
        }
        if ($('.header-contents').length !== 0) {
            return;
        }
        var el = kintone.app.getHeaderSpaceElement();
        var headerDiv = $("<div></div>", {
            class: "header-contents"
        });
        //make a button for approval.
        var balusButton = $("<button></button>", {
            class: "approval-button"
        }).
        html("一括申請!").
        click(function() {
            if (event.records.length > 0) {
                window.swal({
                    title: "本当に全て申請して大丈夫ですか?",
                    text: "表示されているレコードを全て申請します",
                    type: "warning",
                    showCancelButton: true,
                    confirmButtonColor: "#DD6B55",
                    confirmButtonText: "申請!",
                    cancelButtonText: "取り消し",
                    closeOnConfirm: false },
                    function() {
                        var records = [];
                        for (var h = 0; h < event.records.length; h++) {
                            var obj = {};
                            obj["id"] = event.records[h].$id.value;
                            **obj["assignee"] = "テストグループ\_4T69bL";**
                          obj["action"] = "申請";
                            records.push(obj);
                        }
                        var requestObj = {
                            "app": appId,
                            "records": records
                        };
                        kintone.api(kintone.api.url("/k/v1/records/status", true), "PUT", requestObj, function() {
                            window.swal({title: "申請に成功しました!",
                                        text: "お疲れ様でした。",
                                        type: "success"}, function() {
                                            location.reload();
                                            
                                        });
                        });
                    });
            } else {
                window.swal({
                    title: "レコードがありません",
                    type: "warning"});
            }
        });
        
        headerDiv.append(balusButton);
        headerDiv.append($("<br />"));
        headerDiv.appendTo(el);
    });
})();

Hiroさん

こんにちは。

 

グループの指定はできないと思われます。

プロセス管理の設定画面で「次のユーザーから作業者を選択」にしている場合

作業者(assignee)は一人しか割り当てられないためです。

koich様

返信有り難うございます。
グループは指定できないのですね。
作業者を指定して作るっていこうと思います。

この関連でもう一つ質問なのですが、申請ボタンと代理申請ボタンを二つ表示したいのですが、どのように変更すればいいかご教授頂けませんでしょうか?

いくつか要件を確認させてください。

一括申請ボタンと別に一括代理申請ボタンを作りたいということで合ってますか?

それとも、プロセス管理の設定画面で代理申請ボタンを新たに作りたいということでしょうか。

代理申請は通常の申請とどのような点が異なりますか?
たとえば、代理申請できる人の条件や申請先が異なるなど。

一括申請ボタンとは別に一括代理申請ボタンを作成したいということです(一覧画面にボタンを少し間隔を開けて二つ作成したいと思っております)
代理申請は申請出来る人は同じですが申請先は異なります。上記のコードを複製して色々試したのですが同じ一覧画面上でボタンは一つしか作成出来ず。。
javascript初心者で申し訳ありませんがご教授お願い致します。

ご返信ありがとうございます。

 

ボタン生成の定義を2つ並べると良いです。

区別するためにボタンの変数名を「balusButton1」「balusButton2」とします。

最後の方のappendも2つ必要です。

あとはメッセージなどの中身を変更すれば完成です。

 

ボタン間の間隔を空けたい場合は、「.approval-button」クラスに対して、CSSでmarginなどを定義すると良いです。

var appId = kintone.app.getId();
if (event.viewId !== 6457967) {
    return;
}

if ($('.header-contents').length !== 0) {
    return;
}

var el = kintone.app.getHeaderSpaceElement();
var headerDiv = $("<div></div>", {
    class: "header-contents"
});

// 一括申請ボタン生成
var balusButton1 = $("<button></button>", {
    class: "approval-button"
}).
    html("一括申請!").
    click(function() {
        if (event.records.length > 0) {
            window.swal({
                title: "本当に全て申請して大丈夫ですか?",
                text: "表示されているレコードを全て申請します",
                type: "warning",
                showCancelButton: true,
                confirmButtonColor: "#DD6B55",
                confirmButtonText: "申請!",
                cancelButtonText: "取り消し",
                closeOnConfirm: false
            },
                function() {
                    var records = [];
                    for (var h = 0; h < event.records.length; h++) {
                        var obj = {};
                        obj["id"] = event.records[h].$id.value;
                        obj["assignee"] = "user_code";
                        obj["action"] = "申請";
                        records.push(obj);
                    }
                    var requestObj = {
                        "app": appId,
                        "records": records
                    };
                    kintone.api(kintone.api.url("/k/v1/records/status", true), "PUT", requestObj, function() {
                        window.swal({
                            title: "申請に成功しました!",
                            text: "お疲れ様でした。",
                            type: "success"
                        }, function() {
                            location.reload();

                        });
                    });
                });
        } else {
            window.swal({
                title: "レコードがありません",
                type: "warning"
            });
        }
    });

// 一括代理申請ボタン生成
var balusButton2 = $("<button></button>", {
    class: "approval-button"
}).
    html("一括代理申請!").
    click(function() {
        if (event.records.length > 0) {
            window.swal({
                title: "本当に全て申請して大丈夫ですか?",
                text: "表示されているレコードを全て申請します",
                type: "warning",
                showCancelButton: true,
                confirmButtonColor: "#DD6B55",
                confirmButtonText: "申請!",
                cancelButtonText: "取り消し",
                closeOnConfirm: false
            },
                function() {
                    var records = [];
                    for (var h = 0; h < event.records.length; h++) {
                        var obj = {};
                        obj["id"] = event.records[h].$id.value;
                        obj["assignee"] = "user_code";
                        obj["action"] = "申請";
                        records.push(obj);
                    }
                    var requestObj = {
                        "app": appId,
                        "records": records
                    };
                    kintone.api(kintone.api.url("/k/v1/records/status", true), "PUT", requestObj, function() {
                        window.swal({
                            title: "申請に成功しました!",
                            text: "お疲れ様でした。",
                            type: "success"
                        }, function() {
                            location.reload();

                        });
                    });
                });
        } else {
            window.swal({
                title: "レコードがありません",
                type: "warning"
            });
        }
    });

headerDiv.append(balusButton1); // 一括申請ボタンをヘッダーに追加
headerDiv.append(balusButton2); // 一括代理申請ボタンをヘッダーに追加
headerDiv.append($("<br />"));
headerDiv.appendTo(el);

ご返信いただきありがとうございます。
やりたいことが実現出来ました。
この度は有り難うございました!