Jason Peacock had this request for a script to shift multiple tags up/down the tag hierarchy:

Jason’s Problem…

…my Script.

import c4d
from c4d import gui

def main():
    doc.StartUndo()
    sel = doc.GetActiveTags()

    for tag in sel:
        obj = tag.GetMain()
        taglist = obj.GetTags()

        for i, t in enumerate(taglist):
            if t in sel:
                index = i+1
                if index >= len(taglist):
                    return
                #print """Tag: %s || Index: %s""" % (t.GetName(), i)
                doc.AddUndo(c4d.UNDOTYPE_CHANGE, obj)
                obj.InsertTag(t, taglist[index])

    doc.EndUndo()
    c4d.EventAdd()

if __name__=='__main__':
    main()

 

This was essentially my approach, it’s not bulletproof but it works if you want to send multiple tags from one index to the next.