1

Is there a method to get term URL in taxonomy in SharePoint TermStore using PnPJS library?

I am using this code to retreive term Name, Parent and ID:

export interface IPTerm {
parent?: string;
id: string;
name: string;
url: string;
}

export interface ITaxonomyPopulatorState {
  terms: IPTerm[];
}

public async getTermsetWithChildren(): Promise<IPTerm[]> {
    let tms: IPTerm[] = [];
    return new Promise<any[]>((resolve, reject) => {
      const tbatch = taxonomy.createBatch();
      return taxonomy.termStores.getByName("Taxonomy_InjkMqAvKdUBok59vNz/Mg==").get().then((resp1: ITermStore) => {
        return resp1.getTermGroupById("7bdebaed-a684-4682-a5a6-6c1f1e976641").termSets.get().then((resp2: ITermSet[]) => {
          resp2.forEach((ele: ITermSet) => {
            ele.terms.select('Name', 'Id', 'Url').inBatch(tbatch).get().then((resp3: ITerm[]) => {
              resp3.forEach((t: ITerm) => {
                let ip1 = {
                  parent: ele['Name'],
                  name: t['Name'],
                  id: t['Id'].replace("/Guid(", "").replace(")/", ""),
                };
                tms.push(ip1);

              });
            });
          });
          tbatch.execute().then(_r => {
            resolve(tms);
          });
        });
      });
    });
  }

EDIT:

Iterm interface:

export interface ITerm extends IClientSvcQueryable {
    readonly labels: ILabels;
    readonly parent: ITerm;
    readonly pinSourceTermSet: ITermSet;
    readonly reusedTerms: ITerms;
    readonly sourceTerm: ITerm;
    readonly terms: ITerms;
    readonly termSet: ITermSet;
    readonly termSets: ITermSets;
    createLabel(name: string, lcid: number, isDefault?: boolean): Promise<ILabelData & ILabel>;
    deprecate(doDeprecate: boolean): Promise<void>;
    get(): Promise<(ITermData & ITerm)>;
    addTerm(name: string, lcid: number, isAvailableForTagging?: boolean, id?: string): Promise<ITerm & ITermData>;
    getDescription(lcid: number): Promise<string>;
    setDescription(description: string, lcid: number): Promise<void>;
    setLocalCustomProperty(name: string, value: string): Promise<void>;
    update(properties: {
        Name: string;
    }): Promise<ITermData & ITerm>;
}

1 Answer 1

1

Check Term.LocalCustomProperties._Sys_Nav_TargetUrl

My debug screenshot:

enter image description here

Update:

The interface defined in pnpsp.

import { taxonomy, ITermStore, ITermSet, ITerms, ITermData, ITerm } from "@pnp/sp-taxonomy";
5
  • Can you please show me your Iterm interface. I will update the post to show mine.
    – bAbdenour
    Dec 31, 2019 at 11:36
  • Check my update.
    – Lee
    Jan 2, 2020 at 1:16
  • I can retrieve Simple link from _Sys_Nav_SimpleLinkUrl, but _Sys_Nav_TargetUrl returns nothing ; why? I would like to use Friendy URL
    – bAbdenour
    Jan 5, 2020 at 12:24
  • Check term.LocalCustomProperties._Sys_Nav_FriendlyUrlSegment
    – Lee
    Jan 6, 2020 at 2:39
  • I tried that, but it does not work :/ Is there any other manipulation to do in the term store management ?
    – bAbdenour
    Jan 6, 2020 at 3:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.