def getTeamArea(self, teamarea_name, projectarea_id=None,
                    projectarea_name=None, archived=False,
                    returned_properties=None):
        """Get :class:`rtcclient.models.TeamArea` object by its name

        If `projectarea_id` or `projectarea_name` is
        specified, then the matched :class:`rtcclient.models.TeamArea`
        in that project area will be returned.
        Otherwise, only return the first found
        :class:`rtcclient.models.TeamArea` with that name.

        :param teamarea_name: the team area name
        :param projectarea_id: the :class:`rtcclient.project_area.ProjectArea`
            id
        :param projectarea_name: the project area name
        :param archived: (default is False) whether the team area
            is archived
        :param returned_properties: the returned properties that you want.
            Refer to :class:`rtcclient.client.RTCClient` for more explanations
        :return: the :class:`rtcclient.models.TeamArea` object
        :rtype: rtcclient.models.TeamArea
        """

        if not isinstance(teamarea_name,
                          six.string_types) or not teamarea_name:
            excp_msg = "Please specify a valid TeamArea name"
            self.log.error(excp_msg)
            raise exception.BadValue(excp_msg)

        self.log.debug("Try to get <TeamArea %s>", teamarea_name)
        teamareas = self._getTeamAreas(projectarea_id=projectarea_id,
                                       projectarea_name=projectarea_name,
                                       archived=archived,
                                       returned_properties=returned_properties,
                                       teamarea_name=teamarea_name)

        if teamareas is not None:
            teamarea = teamareas[0]
            self.log.info("Find <TeamArea %s>", teamarea)
            return teamarea

        self.log.error("No TeamArea named %s", teamarea_name)
        raise exception.NotFound("No TeamArea named %s" % teamarea_name)