2
1
0

Confluenceのページに添付されているファイルを一括削除する方法はありますか?

関連QA

JIRAの課題に添付されているファイルを一括で削除できますか?

    Commentコメントを追加...

    2 回答

    1.  
      3
      2
      1

      Atlassian Confluence 標準の製品要望は以下です。できません。

      色々方法はあると思いますが...アドオンを使えば以下ですかね。

      あとは、ユーザーマクロでも削除できたりするのかな…

      プログラム書ければ自由にできます。

      WebDAVでもできるかな。

      https://confluence.atlassian.com/doc/configuring-a-webdav-client-for-confluence-148044.html

       

      1. RYOITO

        ドラッグ&ドロップ等で間違えて添付してしまった場合に一個一個削除が必要なのでかなり大変ですよね…

        無償で何かあればいいのですが…

      2. Kengo Ohsaki

        RYOITO-san,

        確かにですね…

        消したいページの添付ファイル一覧を表示してる画面で

        Chromeとかの開発ツールのコンソールにて、以下JavaScriptを実行する。

        AJS.$('div#view-attachments a.filename[title]').each(function() {
        	var filename  = AJS.$(this).attr('title');
        	var pageid    = parseInt(AJS.$('meta[name=ajs-page-id]').attr('content'), 10);
        	var atl_token = AJS.$('meta[name=atlassian-token]').attr('content');
        	AJS.$.ajax({
        		url: contextPath + "/json/removeattachment.action?pageId=" + encodeURIComponent(pageid) + '&fileName=' + encodeURIComponent(filename),
        		type: "POST",
        		data: {atl_token : atl_token},
        		dataType: "json",
        		success: function(msg){
        		}
        	});
        });

        添付ファイルが多くてページングされている場合は1ページごとの削除になりますけどね...

         

        まぁあとは、以下のようなユーザーマクロですかね…

        ## @param page:title=ページ名|type=confluence-content|required=true|desc=ページ名を指定してください。
        
        #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($pageManager=$containerContext.getComponent('pageManager'))
        #set($attachmentManager=$containerContext.getComponent('attachmentManager'))
        #set ($ss='')
        #set ($sp='')
        #foreach ($p in $parampage.split(":"))
           #if ($ss=='')
            #set ($ss=$p)
           #else
            #set ($sp=$p)
           #end
        #end
        #if ($sp=='')
          #set ($sp=$ss)
          #set ($ss=$space.key)
        #end
        #set($page=$pageManager.getPage($ss ,$sp))
        #foreach($attachment in $page.getAttachments())
        #$attachmentManager.removeAttachmentFromServer($attachment)
        #end
        
        

        このユーザーマクロを指定されていると表示するたびに添付ファイル削除しているので…

        結果として添付ファイル許可しないページが出来上がりますけどね…

        removeAttachmentFromServerで通知飛ぶので
        5.8以上であれば removeAttachmentWithoutNotificationsメソッドを使ったほうがいいかもですね。

        https://docs.atlassian.com/confluence/5.9.9/com/atlassian/confluence/pages/AttachmentManager.html#removeAttachmentWithoutNotifications-com.atlassian.confluence.pages.Attachment-d

        5.8 以上だとゴミ箱に行く想定だとtrashメソッド…

        https://docs.atlassian.com/confluence/5.9.9/com/atlassian/confluence/pages/AttachmentManager.html#trash-com.atlassian.confluence.pages.Attachment-

        とかとか…

      Commentコメントを追加...
    2.  
      1
      0
      -1

      Page Assistant もできるみたいです。

      こちらは、そのほかの機能として最新バージョンだけ残して古い履歴だけ消したり、コメントも一括削除できるみたいですね。

        Commentコメントを追加...