docs: def getProjectAreaByID(self, projectarea_id, archived=False,
                             returned_properties=None):
          """Get :class:`rtcclient.project_area.ProjectArea` object by its id
  
          :param projectarea_id: the :class:`rtcclient.project_area.ProjectArea`
              id
          :param archived: (default is False) whether the project 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.project_area.ProjectArea` object
          :rtype: rtcclient.project_area.ProjectArea
          """
  
          if not isinstance(projectarea_id,
                            six.string_types) or not projectarea_id:
              excp_msg = "Please specify a valid ProjectArea ID"
              self.log.error(excp_msg)
              raise exception.BadValue(excp_msg)
  
          self.log.debug("Try to get <ProjectArea> by its id: %s",
                         projectarea_id)
          rp = returned_properties
          proj_areas = self._getProjectAreas(archived=archived,
                                             returned_properties=rp,
                                             projectarea_id=projectarea_id)
          if proj_areas is not None:
              proj_area = proj_areas[0]
              self.log.info("Find <ProjectArea %s>", proj_area)
              return proj_area
  
          self.log.error("No ProjectArea's ID is %s", projectarea_id)
          raise exception.NotFound("No ProjectArea's ID is %s" % projectarea_id)