プロパティーの一覧を取得

(function () {

    function getGroupProperties(oGROUP, bTRAVERSE, bRECURSE) {
        var aProperties = new Array();
        if (!oGROUP) { return aProperties; }
        else {
            const nPROPERTIES = oGROUP.getNumProperties();
            for (var i = 0; i < nPROPERTIES; i++) {
                aProperties.push(oGROUP.getProperty(i));
            }

            if (bRECURSE) { aProperties = aProperties.concat(getGroupProperties(oGROUP.getFirstChild(), bTRAVERSE, bRECURSE)); }
            if (bTRAVERSE) { aProperties = aProperties.concat(getGroupProperties(oGROUP.getNextSibling(), bTRAVERSE, bRECURSE)); }
        }
        return aProperties;
    }

    function getNodeProperties(oNODE, bTRAVERSE, bRECURSE) {
        const oPROPERTY_GROUP_TREE = oNODE.getPropertyGroups();
        const oPROPERTY_GROUP = oPROPERTY_GROUP_TREE.getFirstChild();
        return getGroupProperties(oPROPERTY_GROUP, bTRAVERSE, bRECURSE);
    }

    function getRootNode(pNode)
    {
        if (pNode == null) {
            return null;
        } else {
            if (pNode.isRootNode() == true) {
                return pNode;
            } else {
                return getRootNode(pNode.getNodeParent());
            }
        }
    }

    function run() {
        const oNODE = getRootNode(Scene.getPrimarySelection());
        if (oNODE) {
            const aPROPERTIES = getNodeProperties(oNODE, true, true);
        }
        else {
            return;
        }
        for (var i = 0; i < aPROPERTIES.length; i++) {
            p = aPROPERTIES[i];
            print(p.getLabel());
        }
        return null;
    }
    run();

})();