> ## Documentation Index
> Fetch the complete documentation index at: https://docs.superoffice.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get selected projects

> How to get selected projects with CRMScript

<Tip>
  You can only retrieve projects for persons that are SuperOffice users ([associates][3]).

  The signed-in user must also have permission to view those projects. Otherwise, an exception is thrown.
</Tip>

**To view basic info, use NSProject:**

```crmscript theme={null}
NSProjectAgent projectAgent;
NSProject p = projectAgent.GetProject(1);
printLine(p.GetType());
```

**To view (and possibly update) complex info, use NSProjectEntity:**

```crmscript! theme={null}
NSProjectAgent projectAgent;
NSProjectEntity p = projectAgent.GetProjectEntity(1);
printLine(p.GetProjectType().GetValue());
```

## NSProject\[] GetProjectList(Integer\[] p0)

To call `GetProjectList()`, we need to create the list of **project IDs** first.

In this example, we use [SearchEngine][1] to get the ID of all projects headed by a specific associate and not marked as *done*.

```crmscript theme={null}
String associateId = "5";
Integer[] projectIds;

SearchEngine se;
se.addFields("project","project_id");
se.addCriteria("project.associate_id", "OperatorEquals", associateId,"OperatorAnd", 1);
se.addCriteria("project.done", "OperatorEquals", "=","OperatorAnd", 1);
se.execute();

while (!se.eof()) {
  projectIds.pushBack(se.getField(0).toInteger());
  se.next();
}

NSProjectAgent agent;
NSProject[] projectList = agent.GetProjectList(projectIds);
```

## NSProject\[] GetProjectsFromContact(Integer contactId)

A company is implicitly linked to a project when at least 1 person in that [organization][2] is a [member][5] of that project.

```crmscript! theme={null}
Integer contactId = 4;
NSProjectAgent agent;
NSProject[] projectList = agent.GetProjectsFromContact(contactId);

foreach (NSProject p in projectList) {
  printLine(p.GetProjectId().toString() +" | " + p.GetName());
}
```

## NSProject\[] GetProjectsFromPerson(Integer personId)

```crmscript theme={null}
Integer personId = 5;
NSProjectAgent agent;
NSProject[] projectList = agent.GetProjectsFromPerson(personId);
```

[1]: ../../searchengine/index

[2]: ../company/index

[3]: ../../../../contact/dev/index#associate

[5]: ./members


## Related topics

- [Get Project Type Entity](/en/api/reference/restful/agent/list_agent/get-project-type-entity.md)
- [Get Project Status Headings For List Item](/en/api/reference/restful/rest/list_projectstatus/get-project-status-headings-for-list-item.md)
- [Get Project Type Headings For List Item](/en/api/reference/restful/rest/list_projecttype/get-project-type-headings-for-list-item.md)
- [Get Project Status User Groups For List Item](/en/api/reference/restful/rest/list_projectstatus/get-project-status-user-groups-for-list-item.md)
- [Get Project Type User Groups For List Item](/en/api/reference/restful/rest/list_projecttype/get-project-type-user-groups-for-list-item.md)
- [NSProjectTypeEntity](/en/automation/crmscript/reference/CRMScript.NetServer.NSProjectTypeEntity.md)
