Google Cloud Talent Solution通过requisitionId

时间:2018-10-17 19:06:44

标签: node.js google-cloud-platform google-cloud-talent-solution

我想知道是否可以通过Google Cloud Talent Solution中的requisitionId来获取作业。 requisitionId在所有工作中必须是唯一的,因此看起来很适合找工作。

创建作业后,api返回一个作业name,可用于查找该作业:

  

您可以通过将GET请求发送到Cloud Talent Solution来检索先前插入的作业的详细信息。 URI应该包含原始创建请求返回的先前插入的作业名称,作为URL参数。

如果可能的话,我想避免存储这些名称。在我看来,存储它们会增加不必要的复杂性,因为我已经拥有唯一的requisitionId。需要明确的是,API不允许您添加重复的requisitionId作业:

  

职位项目/ {my_app_id} /职位/ {google_assigned_id}已经存在。跟踪的请求ID:...相关工作申请ID:...

我可以按requisitionId查找作业吗?

我可以解析返回的错误消息以获取工作名称。但这似乎很脆弱。

2 个答案:

答案 0 :(得分:0)

可以将其添加为自定义属性:

Map<String, CustomAttribute> attributes = new HashMap<>();

attributes
    .put("requisitionId", new CustomAttribute().setStringValue(requisitionId)
    .setFilterable(true));

Job job = new Job()
    ...
    .setCustomAttributes(attributes);

Job jobCreated = createJob(job);
String jobName = jobCreated.getName();

,然后使用自定义属性filter搜索requisitionId

 JobQuery jobQuery = new JobQuery().setCustomAttributeFilter(filter);

这有点多余,但是JobQuery没有方法.setRequisitionId()

这是documentation

答案 1 :(得分:0)

事实证明,list方法需要requisitionId,因此对于一个完整的,读取-创建-更新周期,我们可以执行以下操作:

const listRequest = {
  parent: `projects/${projectId}`,
  'filter': `companyName="${companyName}" AND requisitionId="${requisitionId}"`
}
const listResult = await jobService.projects.jobs.list(listRequest)
const existingJobs = listResult.data.jobs || [];

let existingJob = null
if (existingJobs && existingJobs.length > 0) {
  existingJob = existingJobs[0]
}

let googleJob
if (!existingJob) {
  const createRequest = {
    'parent': `projects/${projectId}`,
    'resource': {
      'job': {
        companyName,
        requisitionId,
        title,
        description,
        applicationInfo: {
          emails: ['email@example.com']
        }          
      }
    }
  }
  googleJob = await jobService.projects.jobs.create(createRequest)
  .then(result => result)
  .catch(resp => {
    console.error("ERROR")
    console.error(resp)
  })
} else {
  const patchRequest = {
    'name': existingJob.name,
    'resource': {
      'job': {
        companyName,
        requisitionId,
        title,
        description,
        applicationInfo: {
          emails: ['email@example.com']
        }          
      }
    }
  }
  googleJob = await jobService.projects.jobs.patch(patchRequest)
    .then(result => result)
    .catch(resp => {
      console.error("ERROR")
      console.error(resp)
    })
}

文档:https://cloud.google.com/talent-solution/job-search/docs/reference/rest/v3/projects.jobs/list?authuser=0&hl=de

注意:

  • filter参数中的双引号很重要。它将不接受单引号,并会给出一条错误的错误消息。
  • 即使其他所有内容都需要父参数,补丁请求也不能使用parent参数...