I am trying to invoke bpy.ops.outliner.group_operation(type='LINK') in an addon but unable to get the right context.

From a bit of searching, it appears I would need to have the OUTLINER area active before calling the op, but cannot figure out how to do that.

How can I set the right context in order to call bpy.ops.outliner.group_operation()?

Edit: The ultimate objective is to 'Link Group objects to Scene' which is an option available in the context menu for a group. I managed to make it run by overriding the context but it doesn't appear to actually do anything when run this way.

  • $\begingroup$ I think it would be useful if you could give some context as to what you are attempting as it may turn out that there is a better alternative to group_operation. $\endgroup$ – Ray Mairlot Mar 4 '17 at 16:49
  • 1
    $\begingroup$ @RayMairlot thanks for the suggestion. I have edited the question. $\endgroup$ – RSS Mar 4 '17 at 17:20

Overriding the context finally worked for me, with the help of this answer:

override = bpy.context.copy()
for area in bpy.context.screen.areas:
    if area.type == 'OUTLINER':
        override['area'] = area
bpy.ops.outliner.group_operation(override, type='LINK')
| improve this answer | |
  • $\begingroup$ I gave this a try, but couldn't get it going due to having to have the group highlighted in the Outliner. Without the highlight, it wouldn't work. What is your workaround? How did you make it target a specific group? $\endgroup$ – Draise Aug 18 '17 at 22:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.