# How to stash all actions to current armature?

I just imported a bunch of actions from different files into one blend, but the GLTF exporter can't locate them without them being in the NLA stash. (There used to be a plugin that would export all actions to the GLTF, but 2.8 won't add it to the addon list.)

I tried this:

import bpy

ob = bpy.context.object

if ob.animation_data is None:
ob.animation_data_create()

for action in bpy.data.actions:
bpy.ops.action.stash()


And that just caused:

RuntimeError: Operator bpy.ops.action.stash.poll() failed, context is incorrect

And I haven't been able to find anything on how to fix it for this specific function.

How can I do this?

This does it, but i can't actually unregister the addon.

It needs to be run from the space menu with the cursor in the dopesheet in action mode.

bl_info = {
"name" : "stash all",
"catagory" : "Action",
}

import bpy

class StashAll(bpy.types.Operator):
"""My Stashing Script"""
bl_idname = "action.stash_all"
bl_label = "stash all"
bl_options = {'REGISTER'}

def execute(self, context):
ob = bpy.context.object

if ob.animation_data is None:
ob.animation_data_create()

for action in bpy.data.actions:
track.strips.new(action.name, action.frame_range[0], action)

return {'FINISHED'}

def register():
bpy.utils.register_class(StashAll)

def unregister():
bpy.utils.unregister_class(StashAll)

if __name__ == "__main__":
register()

• Hi! Care to share more details about this? I have your exact same problem but I'm not able to load this script. How can I add this to blender? – Setzer22 Nov 1 '20 at 19:20

For Setzer22's reference: this is the script with typos fixed and in non-addon form. Paste it into the text editor and hit the Run Script button.

import bpy

ob = bpy.context.object

if ob.animation_data is None:
ob.animation_data_create()

for action in bpy.data.actions:
track = ob.animation_data.nla_tracks.new()
track.name = action.name
track.strips.new(action.name, action.frame_range[0], action)