Resurrecting this thread for future travelers. Got a set and get metadata function working. Thanks again for the help Bruce // metadata format: [["fieldName", "fieldLabel", "PropValue"]] // This is to get around eronious property names added at object level. function setMetadata(projectItem, metadata) { var kPProPrivateProjectMetadataURI = "http://ns.adobe.com/premierePrivateProjectMetaData/1.0/"; if (app.isDocumentOpen()) { //var projectItem = app.project.activeSequence.projectItem; if (projectItem) { if (ExternalObject.AdobeXMPScript === undefined) { ExternalObject.AdobeXMPScript = new ExternalObject('lib:AdobeXMPScript'); } if (ExternalObject.AdobeXMPScript !== undefined) { var projectMetadata = projectItem.getProjectMetadata(); var xmp = new XMPMeta(projectMetadata); // Adding new properties to schema for(var pc =0; pc < metadata.length; pc++) { var successfullyAdded = app.project.addPropertyToProjectMetadataSchema(metadata[pc][0], metadata[pc][1], 2); } var array = []; for(var pc =0; pc < metadata.length; pc++) { xmp.setProperty(kPProPrivateProjectMetadataURI, metadata[pc][0], metadata[pc][2]); array.push(metadata[pc][0]); } var str = xmp.serialize(); projectItem.setProjectMetadata(str, array); } } } } // fieldNames = array of fieldnames function getMetadata(projectItem, fieldNames) { var kPProPrivateProjectMetadataURI = "http://ns.adobe.com/premierePrivateProjectMetaData/1.0/"; if (app.isDocumentOpen()) { if (projectItem) { if (ExternalObject.AdobeXMPScript === undefined) { ExternalObject.AdobeXMPScript = new ExternalObject('lib:AdobeXMPScript'); } if (ExternalObject.AdobeXMPScript !== undefined) { var retArray = [] var projectMetadata = projectItem.getProjectMetadata(); var xmp = new XMPMeta(projectMetadata); for(var pc =0; pc < fieldNames.length; pc++) { if(xmp.doesPropertyExist(kPProPrivateProjectMetadataURI, fieldNames[pc])) { retArray.push([fieldNames[pc], xmp.getProperty(kPProPrivateProjectMetadataURI, fieldNames[pc])]) } } return(retArray); } } } return(false); } // Test Code var projectItem = app.project.activeSequence.projectItem; var testObj = {}; testObj.propA = "test2"; testObj.propB = [4,2,3,2000]; setMetadata(projectItem, [["myCustomPropName", "myCustomPropLabel", JSON.stringify(testObj)]]); // value doesnt need to be JSON, just using as example getMetadata(projectItem, ["myCustomPropName"]);
... View more