1 回答
- 10-1
技術的に出来るかできないかでいうと、ユーザーマクロできるかもしれませんね…
共有を飛ばすのは、「共有」ボタン機能のことかと思いますがその機能は Share Page というアドオンで実現しています。
外部から操作するJava APIが存在するのですが、Javadocが公開されていないため(たぶん)
以下などからアドオンの実装からAPIを自分で確認する必要があります。
基本的には
com.atlassian.confluence.plugins.sharepage.api.ShareRequest クラスに共有したい情報を設定
com.atlassian.confluence.plugins.sharepage.api.SharePageService の share メソッドにそのクラスを引数として渡せばできるはず…
イメージですが以下のような感じですかね。脳内コードなので動作確認すらしてません。
## @param group:title=グループ名|type=string|required=true|desc=グループ名を指定してください。 #set($hashsetClass = $content.class.forName('java.util.HashSet')) #set($hashset = $hashsetClass.newInstance()) #set($ret = $hashset.add($paramgroup)) #set($containerManagerClass = $content.class.forName('com.atlassian.spring.container.ContainerManager')) #set($getInstanceMethod = $containerManagerClass.getDeclaredMethod('getInstance',null)) #set($containerManager = $getInstanceMethod.invoke(null,null)) #set($containerContext = $containerManager.containerContext) #set($sharePageService = $containerContext.getComponent('com.atlassian.confluence.plugins.sharepage.api.SharePageService')) #set($shareRequestBuilderClass = $content.class.forName('com.atlassian.confluence.plugins.sharepage.api.ShareRequestBuilder')) #set($shareRequestBuilder = $shareRequestBuilderClass.setEntityId(content.getContentId().asLong())); #set($shareRequestBuilder = $shareRequestBuilder.setContextualPageId(content.getContentId().asLong())); #set($shareRequestBuilder = $shareRequestBuilder.setEntityTypeValue(content.getContentTypeObject().getType()); #set($shareRequestBuilder = $shareRequestBuilder.setNote("共有"); #set($shareRequestBuilder = $shareRequestBuilder.setGroups($hashset)); #set($sharePageService.share($shareRequestBuilder.build()));
ちなみにアドオン的には、そのものの機能はなかった記憶ですが似た機能として…
グループ名のMentionアドオン(但しページ保存時にグループに所属するメンバーもMentionに展開されるはずです)
ラベル=グループを指定しておき、そのラベルをページに設定すると自動共有するアドオン
基本機能としては、ウオッチは ページ または スペースしかなく、スペースに新しいページが作成されたときに通知が行くようにはスペースウオッチしかない。しかし、スペースウオッチだと範囲が広く通知が多くなる懸念がある。そのため、ページツリー(その配下に新しいページが作成されたときにのみ通知する)でのウオッチができるようにするアドオン。
- 蒼龍
Kengo Ohsakiさん
ありがとうございました。結局、上記コードではエラーが出て動きませんでした。
難易度が相当高そうなので、要望を出してきたユーザーには、技術的に難しい と回答しようとおもいます。 - Kengo Ohsaki
蒼龍-san,
はい。多分いろいろ間違っているソースコードかと思います。
そもそも、ユーザーマクロからShare PageプラグインのAPI、クラスにアクセスできない気がしてきましたので、技術的にもできないかもしれません。
期待させてしまい申し訳ありません。
アドオンを使えば似たことはできると思いますけどね…どこまで実現したいかにもよりますね。
コメントを追加...
Confluenceのページ作成画面で
グループを設定すると、ページ作成時に指定したグループに対して
共有を飛ばせるようなマクロを作りたいと思っているのですが、マクロで可能でしょうか?