STEAM PLACE

エンジニアリングとマネジメント

Bookmarklet で TeamSprit の申請を一括承認する

TeamSprit というワークフローツールにて、申請のあったワークフローを一括で承認する Bookmarklet です。

未承認一覧

未承認一覧がこんなに溜まったら手でポチポチやってたら辛いですよね。というわけで、一括承認をしちゃいましょう。

 Bookmarklet の中身

処理内容は次のようにしています。

  1. 承認ダイアログを出すためのアローをクリック
  2. アローをクリックすると「承認」「却下」などのドロップダウンリストが表示されるので「承認」をクリック
  3. 承認ダイアログが表示されるので「承認」クリック
javascript:(
    function() {
        var arrow_interval_id = setInterval(function() {
            // click arrow
            var arrow = document.querySelector('.rowActionsPlaceHolder.slds-button.slds-button--icon-x-small.slds-button--icon-border-filled.keyboardMode--trigger');
            if (arrow) {
                arrow.click();

                // click approval dropdown
                var dropdown_interval_id = setInterval(function() {
                    var dropdown = document.querySelector('.forceActionLink');
                    if (dropdown) {
                        dropdown.click();
                        clearInterval(dropdown_interval_id); 

                        // click approval modal
                        var modal_interval_id = setInterval(function() {
                            var modal = document.querySelector('.slds-button.slds-button--neutral.modal-button-left.actionButton.uiButton--default.uiButton--brand.uiButton'); 
                            if (modal) {
                                modal.click();
                                clearInterval(modal_interval_id);
                            }
                        }, 1000);
                    }
                }, 500);
            } else {
                clearInterval(arrow_interval_id);
            }
        }, 4000);
    }
)();

ソースコードは GitHub にアップしてます。

ソースを Closure Compiler でコンパイルしたら Bookmarklet の完成です。

 イケてない点

  • TeamSprit は DOM に id がセットされていない ー querySelector でがんばることに。
  • モーダルの表示までがもっさりと動く ー setInterval() でモーダル表示までの処理待ちをする。通信環境によってタイムアウト時間は調整が必要。

 おわり

Bookmarklet を TeamSprit の未承認申請の画面(前述の画面キャプチャのページ)で実行すると、溜まっている申請を全部承認してくれます。一括承認するのはよいですが、申請の中身はちゃんと見てくださいね。