createSetProjectMetadataAction leaving a lot of history

I am a video editor currently learning UXP coding.
Im just making a script to insert some metadata into many projectItems.
this is an example of the script:

for (const item of matchedItems) {
const updatedFields = ["Column.PropertyBool.Good", "Column.Intrinsic.LogNote", "Column.PropertyText.Scene", "Column.PropertyText.Shot", "Column.PropertyText.Description"];
const metadata = `
                    <?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
                    <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 9.0-c001 152.deb9585, 2024/02/06-08:36:10 ">
                        <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
                            <rdf:Description rdf:about="" xmlns:premierePrivateProjectMetaData="http://ns.adobe.com/premierePrivateProjectMetaData/1.0/">
<premierePrivateProjectMetaData:Column.Intrinsic.Name>${combinedFileName}</premierePrivateProjectMetaData:Column.Intrinsic.Name>
<premierePrivateProjectMetaData:Column.PropertyText.Label>BE.Prefs.LabelColors.${label}</premierePrivateProjectMetaData:Column.PropertyText.Label>       <premierePrivateProjectMetaData:Column.PropertyBool.Hide>True</premierePrivateProjectMetaData:Column.PropertyBool.Hide>
<premierePrivateProjectMetaData:Column.PropertyBool.Good>${rate}</premierePrivateProjectMetaData:Column.PropertyBool.Good>
<premierePrivateProjectMetaData:Column.PropertyText.Scene>${scene}</premierePrivateProjectMetaData:Column.PropertyText.Scene>
<premierePrivateProjectMetaData:Column.PropertyText.Shot>${combinedName}</premierePrivateProjectMetaData:Column.PropertyText.Shot>
<premierePrivateProjectMetaData:Column.PropertyText.Description>${desc}</premierePrivateProjectMetaData:Column.PropertyText.Description>
                            </rdf:Description>
                        </rdf:RDF>
                    </x:xmpmeta>
                    <?xpacket end="w"?>
                `;

const projectItem = ppro.ProjectItem.cast(item);
const setProjectMetadataAction = ppro.Metadata.createSetProjectMetadataAction(projectItem, metadata, updatedFields);
project.lockedAccess(() => {
            project.executeTransaction((compoundAction) => {
                compoundAction.addAction(setProjectMetadataAction);
            }, "createSetProjectMetadataAction");
        });
}

well but this gives a lot of history in each column of metadata that is input. so I can’t undo it all.
what I want to ask is how to make all this history into 1 action. so I can undo it all at once.

sorry maybe this is a stupid question, because I’m just learning and don’t know where to ask

No worries and this is not a stupid question at all!

It’s a bug that is specific to the createSetProjectMetadataAction, as outlined in known issue section for the sample metadata handler panel which uses createSetProjectMetadataAction for functionality as well.

We will keep things updated in the forum once we have a fix for it available in Premiere Pro (beta).

Thanks for trying out UXP!

1 Like