Because We Love Happy Coding

フリーライターからエンジニア × 講師。発信力だけあり余ってる感じ

Garoonカスタマイズのイベントが発生する条件(全体Jsのイベントが発火しない)

今日もまたコーディング。だって僕らはHappy Codingが大好きだから。

目次

環境

  • Garoon

Garoonの全体カスタマイズとアプリカスタマイズ

これまで、Garoonでカスタマイズできるのはポータル、スケジュール、ワークフロー、メッセージなど限られていた。

2019年11月のCybozuDays2019でも発表されたように、Garoonのアップデートが入り、Garoon全体に対するカスタマイズが可能になった。

Garoon全体のカスタマイズ | クラウド版 Garoon ヘルプ

  • Garoonシステム管理>基本システムの管理タブ>カスタマイズ>JavaScript/CSSによるカスタマイズ

ところが、これの適用条件でちょっとハマった。

スケジュール、ワークフロー、メッセージのように個別カスタマイズが用意されているアプリケーションは、個別アプリに何かしら「カスタマイズを適用」しておかないと、全体スクリプトがgaroonイベントを拾ってくれないのだ。

js自体は読み込まれているのでDOM操作はできるのだが、garoonイベントが発生しない。

全体アプリ 個別アプリ js イベント
適用 不適用 読み込まれる 発火しない
適用 適用 読み込まれる 発火する

個別アプリのカスタマイズが不適用の状態ではイベントは発火しないが、jsは読み込まれているので、events.onによらない処理(jQueryとか)は動作する。

つまり、個別アプリ(スケジュール、ワークフロー、メッセージ)のカスタマイズがONになっている時にのみ、これらのイベントが発生する。

ちなみに、個別アプリが適用になると全体アプリもイベントが発火するようになるため、全体アプリと個別アプリで2回とも発火することになる。

Tampermonkeyなどのブラウザ側スクリプトも同じで、個別アプリに何かしら適用してあれば、発火するようになる。個別アプリに適用されているものがないと、イベント自体が発生しない。

公式からの注意喚起

上記の全体カスタマイズのドキュメントにも、以下の記述がある。

次のアプリケーションは、各アプリケーションの管理画面でカスタマイズすることを推奨します。
ポータルのカスタマイズ
スケジュールのカスタマイズ
メッセージのカスタマイズ
ワークフローのカスタマイズ

まとめ

公式の方でもこの現象は把握しているそうなので、そのうちこの仕様変更されるかもしれない。