このチュートリアルは、Cloud Talent Solution を使用するアプリケーションの探索と開発を開始できるように作られています。基本的なプログラミングの知識があることが前提ですが、プログラミングの深い知識がなくてもチュートリアルに沿って学習できます。このチュートリアルを修了すると、リファレンス ドキュメントを使用して独自の基本的なアプリケーションを作成できます。 チュートリアル動画やインタラクティブなコードラボも利用可能です。ご不明な点がございましたら、こちらからお問い合わせください。
要件
以下が必要です。
- 始める前にに説明されているとおり、プロジェクトの作成と設定の手順を行っていること。
- アプリケーションのデフォルト認証情報を使用して環境を設定していること。
- Java または Python プログラミングの基本事項を理解していること。
- 最新の Google API Java クライアントか Google API Python クライアントをインストールしていること。
会社と求人を作成し、その求人を検索する
このチュートリアルでは、基本的な Cloud Talent Solution アプリケーションについて順を追って説明し、Company リソースに関連付く 1 つの Job リソースを作成する手順を紹介します。次のチュートリアルでは、求人と検索クエリの属性に基づいてCompany 内の Job を検索する手順を説明します。search
API では、Job 内に用意されている項目(会社名、役職、求人の説明、求人のカテゴリ、勤務地など)に基づいて求職者のクエリに最も関連性の高い求人が返されます。
会社の作成
Company とは、求人情報に関連付けられているエンティティのことです。その会社の求人を Cloud Talent Solution に投稿する前に、Company オブジェクトを作成する必要があります。Company を作成するときは、自由形式の文字列を externalId
として送信できます。つまり、Company を作成し、参照する場合は、既存のデータベース(ある場合)の主キーを使用できます。
Go
import (
"context"
"fmt"
"io"
talent "cloud.google.com/go/talent/apiv4beta1"
talentpb "google.golang.org/genproto/googleapis/cloud/talent/v4beta1"
)
// createCompany creates a company as given.
func createCompany(w io.Writer, projectID, externalID, displayName string) (*talentpb.Company, error) {
ctx := context.Background()
// Initializes a companyService client.
c, err := talent.NewCompanyClient(ctx)
if err != nil {
return nil, fmt.Errorf("talent.NewCompanyClient: %v", err)
}
// Construct a createCompany request.
req := &talentpb.CreateCompanyRequest{
Parent: fmt.Sprintf("projects/%s", projectID),
Company: &talentpb.Company{
ExternalId: externalID,
DisplayName: displayName,
},
}
resp, err := c.CreateCompany(ctx, req)
if err != nil {
return nil, fmt.Errorf("CreateCompany: %v", err)
}
fmt.Fprintf(w, "Created company: %q\n", resp.GetName())
return resp, nil
}
Java
Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。
import com.google.cloud.talent.v4.Company;
import com.google.cloud.talent.v4.CompanyServiceClient;
import com.google.cloud.talent.v4.CreateCompanyRequest;
import com.google.cloud.talent.v4.TenantName;
import java.io.IOException;
public class JobSearchCreateCompany {
public static void createCompany() throws IOException {
// TODO(developer): Replace these variables before running the sample.
String projectId = "your-project-id";
String tenantId = "your-tenant-id";
String displayName = "your-company-display-name";
String externalId = "your-external-id";
createCompany(projectId, tenantId, displayName, externalId);
}
// Create a company.
public static void createCompany(
String projectId, String tenantId, String displayName, String externalId) throws IOException {
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests. After completing all of your requests, call
// the "close" method on the client to safely clean up any remaining background resources.
try (CompanyServiceClient companyServiceClient = CompanyServiceClient.create()) {
TenantName parent = TenantName.of(projectId, tenantId);
Company company =
Company.newBuilder().setDisplayName(displayName).setExternalId(externalId).build();
CreateCompanyRequest request =
CreateCompanyRequest.newBuilder()
.setParent(parent.toString())
.setCompany(company)
.build();
Company response = companyServiceClient.createCompany(request);
System.out.println("Created Company");
System.out.format("Name: %s%n", response.getName());
System.out.format("Display Name: %s%n", response.getDisplayName());
System.out.format("External ID: %s%n", response.getExternalId());
}
}
}
Node.js
Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。
const talent = require('@google-cloud/talent').v4;
/**
* Create Company
*
* @param projectId {string} Your Google Cloud Project ID
* @param tenantId {string} Identifier of the Tenant
*/
function sampleCreateCompany(projectId, tenantId, displayName, externalId) {
const client = new talent.CompanyServiceClient();
// const projectId = 'Your Google Cloud Project ID';
// const tenantId = 'Your Tenant ID (using tenancy is optional)';
// const displayName = 'My Company Name';
// const externalId = 'Identifier of this company in my system';
const formattedParent = client.tenantPath(projectId, tenantId);
const company = {
displayName: displayName,
externalId: externalId,
};
const request = {
parent: formattedParent,
company: company,
};
client
.createCompany(request)
.then(responses => {
const response = responses[0];
console.log('Created Company');
console.log(`Name: ${response.name}`);
console.log(`Display Name: ${response.displayName}`);
console.log(`External ID: ${response.externalId}`);
})
.catch(err => {
console.error(err);
});
}
Python
Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。
from google.cloud import talent
import six
def create_company(project_id, tenant_id, display_name, external_id):
"""Create Company"""
client = talent.CompanyServiceClient()
# project_id = 'Your Google Cloud Project ID'
# tenant_id = 'Your Tenant ID (using tenancy is optional)'
# display_name = 'My Company Name'
# external_id = 'Identifier of this company in my system'
if isinstance(project_id, six.binary_type):
project_id = project_id.decode("utf-8")
if isinstance(tenant_id, six.binary_type):
tenant_id = tenant_id.decode("utf-8")
if isinstance(display_name, six.binary_type):
display_name = display_name.decode("utf-8")
if isinstance(external_id, six.binary_type):
external_id = external_id.decode("utf-8")
parent = f"projects/{project_id}/tenants/{tenant_id}"
company = {"display_name": display_name, "external_id": external_id}
response = client.create_company(parent=parent, company=company)
print("Created Company")
print("Name: {}".format(response.name))
print("Display Name: {}".format(response.display_name))
print("External ID: {}".format(response.external_id))
return response.name
Ruby
Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。
require "google/cloud/talent"
# Instantiate a client
company_service = Google::Cloud::Talent.company_service
# project_id = "Your Google Cloud Project ID"
# tenant_id = "Your Tenant ID (using tenancy is required)"
parent = company_service.tenant_path project: project_id, tenant: tenant_id
# display_name = "My Company Name"
# external_id = "Identifier of this company in my system"
company = { display_name: display_name, external_id: external_id }
response = company_service.create_company parent: parent, company: company
puts "Created Company"
puts "Name: #{response.name}"
puts "Display Name: #{response.display_name}"
puts "External ID: #{response.external_id}"
C#
Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。
public static object CreateJobCustomAttributes(string projectId, string tenantId, string companyId, string requisitionId)
{
JobServiceClient jobServiceClient = JobServiceClient.Create();
TenantName tenantName = TenantName.FromProjectTenant(projectId, tenantId);
// Custom attribute can be string or numeric value, and can be filtered in search queries.
// https://cloud.google.com/talent-solution/job-search/docs/custom-attributes
CustomAttribute customAttributes = new CustomAttribute
{
Filterable = true
};
customAttributes.StringValues.Add("Internship");
customAttributes.StringValues.Add("Intern");
customAttributes.StringValues.Add("Apprenticeship");
Job job = new Job
{
Company = companyId,
RequisitionId = requisitionId,
Title = "Software Developer I",
Description = "This is a description of this <i>wonderful</i> job!",
LanguageCode = "en-US"
};
job.CustomAttributes.Add("FOR_STUDENTS", customAttributes);
CreateJobRequest request = new CreateJobRequest
{
ParentAsTenantName = tenantName,
Job = job
};
Job response = jobServiceClient.CreateJob(request);
Console.WriteLine($"Created Job: {response.Name}");
return 0;
}
求人の作成
新しい Job リソースを投稿するには、求人に関するすべての必須フィールドと、この Job を関連付ける Company の companyName
を指定する必要があります。companyName
は、以前に Company リソースを作成したときに指定しています。
求人データが入力されたデータ オブジェクトは、POST リクエストを使用して Cloud Talent Solution エンドポイントに送信されます。name
フィールドは最初のリクエストでは設定しないでください。これは createJob
API の「出力のみ」項目であり、サーバーによって新しい求人エンティティが作成されるときに API レスポンスに含まれるためです。Job リソースとやり取りする API エンドポイントは、Cloud Talent Solution クライアント ライブラリ ドキュメントに示されています。
リクエストに対するレスポンスは、新しい Job オブジェクトです。そこに、この投稿を一意に表す Job の name
を含める必要があります。Job の name
は、投稿の更新や削除が必要になったときに使用します。この name
を保存して、お客様所有の一意の ID にマッピングすることをおすすめします。
新しく求人を作成しようとしたとき、同じ会社に対して同じ companyName
、requisitionId
、languageCode
を持つ別の求人がシステムにすでに存在していると、サーバーからエラーが返されます。
Cloud Talent Solution では、特定の場所に特化した求人も作成できます。詳細については、locations
をご覧ください。
次のコードでは、companyName
フィールドに指定された会社について必須フィールドのみを含む求人を作成します。
次のコードサンプルを使用して求人を作成できます。詳細については、クイックスタート: 会社と求人を作成するをご覧ください。
Go
Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。
import (
"context"
"fmt"
"io"
talent "cloud.google.com/go/talent/apiv4beta1"
talentpb "google.golang.org/genproto/googleapis/cloud/talent/v4beta1"
)
// createJob create a job as given.
func createJob(w io.Writer, projectID, companyID, requisitionID, title, URI, description, address1, address2, languageCode string) (*talentpb.Job, error) {
ctx := context.Background()
// Initialize a jobService client.
c, err := talent.NewJobClient(ctx)
if err != nil {
fmt.Printf("talent.NewJobClient: %v\n", err)
return nil, err
}
jobToCreate := &talentpb.Job{
CompanyName: fmt.Sprintf("projects/%s/companies/%s", projectID, companyID),
RequisitionId: requisitionID,
Title: title,
ApplicationInfo: &talentpb.Job_ApplicationInfo{
Uris: []string{URI},
},
Description: description,
Addresses: []string{address1, address2},
LanguageCode: languageCode,
}
// Construct a createJob request.
req := &talentpb.CreateJobRequest{
Parent: fmt.Sprintf("projects/%s", projectID),
Job: jobToCreate,
}
resp, err := c.CreateJob(ctx, req)
if err != nil {
fmt.Printf("Failed to create job: %v\n", err)
return nil, err
}
fmt.Printf("Created job: %q\n", resp.GetName())
return resp, nil
}
Java
Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。
import com.google.cloud.talent.v4.CreateJobRequest;
import com.google.cloud.talent.v4.Job;
import com.google.cloud.talent.v4.JobServiceClient;
import com.google.cloud.talent.v4.TenantName;
import java.io.IOException;
import java.sql.Timestamp;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Calendar;
import java.util.List;
import java.util.Locale;
public class JobSearchCreateJob {
public static void createJob() throws IOException {
// TODO(developer): Replace these variables before running the sample.
String projectId = "your-project-id";
String tenantId = "your-tenant-id";
String companyId = "your-company-id";
String requisitionId = "your-unique-req-id";
String jobApplicationUrl = "your-job-url";
// String projectId = "me-qa-1";
// String tenantId = "8ed97629-27ee-4215-909b-18cfe3b7e8e3";
// String companyId = "05317758-b30e-4b26-a57d-d9e54e4cccd8";
// String requisitionId = "test-requisitionid-1";
// String jobApplicationUrl = "http://job.url";
createJob(projectId, tenantId, companyId, requisitionId, jobApplicationUrl);
}
// Create a job.
public static void createJob(
String projectId,
String tenantId,
String companyId,
String requisitionId,
String jobApplicationUrl)
throws IOException {
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests. After completing all of your requests, call
// the "close" method on the client to safely clean up any remaining background resources.
try (JobServiceClient jobServiceClient = JobServiceClient.create()) {
TenantName parent = TenantName.of(projectId, tenantId);
Job.ApplicationInfo applicationInfo =
Job.ApplicationInfo.newBuilder().addUris(jobApplicationUrl).build();
List<String> addresses =
Arrays.asList(
"1600 Amphitheatre Parkway, Mountain View, CA 94043",
"111 8th Avenue, New York, NY 10011");
// By default, job will expire in 30 days.
// https://cloud.google.com/talent-solution/job-search/docs/jobs
Job job =
Job.newBuilder()
.setCompany(companyId)
.setRequisitionId(requisitionId)
.setTitle("Software Developer")
.setDescription("Develop, maintain the software solutions.")
.setApplicationInfo(applicationInfo)
.addAllAddresses(addresses)
.setLanguageCode("en-US")
.build();
CreateJobRequest request =
CreateJobRequest.newBuilder().setParent(parent.toString()).setJob(job).build();
Job response = jobServiceClient.createJob(request);
System.out.format("Created job: %s%n", response.getName());
}
}
}
Node.js
Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。
const talent = require('@google-cloud/talent').v4;
/**
* Create Job
*
* @param projectId {string} Your Google Cloud Project ID
* @param tenantId {string} Identifier of the Tenant
*/
function sampleCreateJob(
projectId,
tenantId,
companyName,
requisitionId,
title,
description,
jobApplicationUrl,
addressOne,
addressTwo,
languageCode
) {
const client = new talent.JobServiceClient();
// const projectId = 'Your Google Cloud Project ID';
// const tenantId = 'Your Tenant ID (using tenancy is optional)';
// const companyName = 'Company name, e.g. projects/your-project/companies/company-id';
// const requisitionId = 'Job requisition ID, aka Posting ID. Unique per job.';
// const title = 'Software Engineer';
// const description = 'This is a description of this <i>wonderful</i> job!';
// const jobApplicationUrl = 'https://www.example.org/job-posting/123';
// const addressOne = '1600 Amphitheatre Parkway, Mountain View, CA 94043';
// const addressTwo = '111 8th Avenue, New York, NY 10011';
// const languageCode = 'en-US';
const formattedParent = client.tenantPath(projectId, tenantId);
const uris = [jobApplicationUrl];
const applicationInfo = {
uris: uris,
};
const addresses = [addressOne, addressTwo];
const job = {
company: companyName,
requisitionId: requisitionId,
title: title,
description: description,
applicationInfo: applicationInfo,
addresses: addresses,
languageCode: languageCode,
};
const request = {
parent: formattedParent,
job: job,
};
client
.createJob(request)
.then(responses => {
const response = responses[0];
console.log(`Created job: ${response.name}`);
})
.catch(err => {
console.error(err);
});
}
Python
Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。
from google.cloud import talent
import six
def create_job(
project_id, tenant_id, company_id, requisition_id, job_application_url,
):
"""Create Job"""
client = talent.JobServiceClient()
# project_id = 'Your Google Cloud Project ID'
# tenant_id = 'Your Tenant ID (using tenancy is optional)'
# company_id = 'Company name, e.g. projects/your-project/companies/company-id'
# requisition_id = 'Job requisition ID, aka Posting ID. Unique per job.'
# title = 'Software Engineer'
# description = 'This is a description of this <i>wonderful</i> job!'
# job_application_url = 'https://www.example.org/job-posting/123'
# address_one = '1600 Amphitheatre Parkway, Mountain View, CA 94043'
# address_two = '111 8th Avenue, New York, NY 10011'
# language_code = 'en-US'
if isinstance(project_id, six.binary_type):
project_id = project_id.decode("utf-8")
if isinstance(tenant_id, six.binary_type):
tenant_id = tenant_id.decode("utf-8")
if isinstance(company_id, six.binary_type):
company_id = company_id.decode("utf-8")
if isinstance(requisition_id, six.binary_type):
requisition_id = requisition_id.decode("utf-8")
if isinstance(job_application_url, six.binary_type):
job_application_url = job_application_url.decode("utf-8")
parent = f"projects/{project_id}/tenants/{tenant_id}"
uris = [job_application_url]
application_info = {"uris": uris}
addresses = [
"1600 Amphitheatre Parkway, Mountain View, CA 94043",
"111 8th Avenue, New York, NY 10011",
]
job = {
"company": company_id,
"requisition_id": requisition_id,
"title": "Software Developer",
"description": "Develop, maintain the software solutions.",
"application_info": application_info,
"addresses": addresses,
"language_code": "en-US",
}
response = client.create_job(parent=parent, job=job)
print("Created job: {}".format(response.name))
return response.name
Ruby
Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。
require "google/cloud/talent"
# Instantiate a client
job_service = Google::Cloud::Talent.job_service
# project_id = "Your Google Cloud Project ID"
# tenant_id = "Your Tenant ID (using tenancy is required)"
parent = job_service.tenant_path project: project_id, tenant: tenant_id
# job_application_url = "https://www.example.org/job-posting/123"
uris = [job_application_url]
application_info = { uris: uris }
# address = "1600 Amphitheatre Parkway, Mountain View, CA 94043"
addresses = [address]
# company_name = "Company name, e.g. projects/your-project/companies/company-id"
# requisition_id = "Job requisition ID, aka Posting ID. Unique per job."
# title = "Software Engineer"
# description = "This is a description of this <i>wonderful</i> job!"
# language_code = "en-US"
job = {
company: company_name,
requisition_id: requisition_id,
title: title,
description: description,
application_info: application_info,
addresses: addresses,
language_code: language_code
}
response = job_service.create_job parent: parent, job: job
puts "Created job: #{response.name}"
C#
Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。
public static object CreateJob(string projectId, string tenantId, string companyId, string requisitionId, string jobApplicationUrl)
{
JobServiceClient jobServiceClient = JobServiceClient.Create();
TenantName tenantName = TenantName.FromProjectTenant(projectId, tenantId);
ApplicationInfo applicationInfo = new ApplicationInfo();
applicationInfo.Uris.Add(jobApplicationUrl);
Job job = new Job
{
Company = companyId,
RequisitionId = requisitionId,
Title = "Software Developer",
Description = "Develop, maintain the software solutions.",
ApplicationInfo = applicationInfo,
LanguageCode = "en-US"
};
string[] addresses = { "1600 Amphitheatre Parkway, Mountain View, CA 94043", "111 8th Avenue, New York, NY 10011" };
job.Addresses.Add(addresses);
CreateJobRequest request = new CreateJobRequest
{
ParentAsTenantName = tenantName,
Job = job
};
Job response = jobServiceClient.CreateJob(request);
Console.WriteLine($"Created Job: {response.Name}");
return 0;
}
カスタム フィールドを使用して求人を作成する
Cloud Talent Solution には、求人フィールドがいくつか API スキーマに組み込まれています。ただし、すぐに使えるオプションにはない追加のフィールドが必要になる場合があります。可能な限りすぐに使用できるフィールドを使用することをお勧めしますが、Cloud Talent Solution では求人用にいくつかの customAttributes
フィールドも用意しています。この中にはフィルタ可能なものと、そうでないものがあります。詳細については、customAttributes
ドキュメントをご覧ください。
次のコード例は、customAttribute
を使用して求人を作成する方法を示しています。
Go
Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。
import (
"context"
"fmt"
"io"
talent "cloud.google.com/go/talent/apiv4beta1"
"github.com/gofrs/uuid"
talentpb "google.golang.org/genproto/googleapis/cloud/talent/v4beta1"
money "google.golang.org/genproto/googleapis/type/money"
)
// createJobWithCustomAttributes creates a job with custom attributes.
func createJobWithCustomAttributes(w io.Writer, projectID, companyID, jobTitle string) (*talentpb.Job, error) {
ctx := context.Background()
// Initialize a job service client.
c, err := talent.NewJobClient(ctx)
if err != nil {
return nil, fmt.Errorf("talent.NewJobClient: %v", err)
}
// requisitionID shoud be the unique ID in your system
requisitionID := fmt.Sprintf("job-with-custom-attribute-%s", uuid.Must(uuid.NewV4()).String())
jobToCreate := &talentpb.Job{
Company: fmt.Sprintf("projects/%s/companies/%s", projectID, companyID),
RequisitionId: requisitionID,
Title: jobTitle,
ApplicationInfo: &talentpb.Job_ApplicationInfo{
Uris: []string{"https://googlesample.com/career"},
},
Description: "Design, devolop, test, deploy, maintain and improve software.",
LanguageCode: "en-US",
PromotionValue: 2,
EmploymentTypes: []talentpb.EmploymentType{talentpb.EmploymentType_FULL_TIME},
Addresses: []string{"Mountain View, CA"},
CustomAttributes: map[string]*talentpb.CustomAttribute{
"someFieldString": {
Filterable: true,
StringValues: []string{"someStrVal"},
},
"someFieldLong": {
Filterable: true,
LongValues: []int64{900},
},
},
CompensationInfo: &talentpb.CompensationInfo{
Entries: []*talentpb.CompensationInfo_CompensationEntry{
{
Type: talentpb.CompensationInfo_BASE,
Unit: talentpb.CompensationInfo_HOURLY,
CompensationAmount: &talentpb.CompensationInfo_CompensationEntry_Amount{
Amount: &money.Money{
CurrencyCode: "USD",
Units: 1,
},
},
},
},
},
}
// Construct a createJob request.
req := &talentpb.CreateJobRequest{
Parent: fmt.Sprintf("projects/%s", projectID),
Job: jobToCreate,
}
resp, err := c.CreateJob(ctx, req)
if err != nil {
return nil, fmt.Errorf("CreateJob: %v", err)
}
fmt.Fprintf(w, "Created job with custom attributres: %q\n", resp.GetName())
fmt.Fprintf(w, "Custom long field has value: %v\n", resp.GetCustomAttributes()["someFieldLong"].GetLongValues())
return resp, nil
}
Java
Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。
import com.google.cloud.talent.v4.CreateJobRequest;
import com.google.cloud.talent.v4.CustomAttribute;
import com.google.cloud.talent.v4.Job;
import com.google.cloud.talent.v4.JobServiceClient;
import com.google.cloud.talent.v4.TenantName;
import java.io.IOException;
public class JobSearchCreateJobCustomAttributes {
public static void createJob() throws IOException {
// TODO(developer): Replace these variables before running the sample.
String projectId = "your-project-id";
String tenantId = "your-tenant-id";
String companyId = "your-company-id";
String requisitionId = "your-unique-req-id";
createJob(projectId, tenantId, companyId, requisitionId);
}
// Create Job with Custom Attributes.
public static void createJob(
String projectId,
String tenantId,
String companyId,
String requisitionId)
throws IOException {
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests. After completing all of your requests, call
// the "close" method on the client to safely clean up any remaining background resources.
try (JobServiceClient jobServiceClient = JobServiceClient.create()) {
TenantName parent = TenantName.of(projectId, tenantId);
// Custom attribute can be string or numeric value, and can be filtered in search queries.
// https://cloud.google.com/talent-solution/job-search/docs/custom-attributes
CustomAttribute customAttribute = CustomAttribute.newBuilder()
.addStringValues("Internship")
.addStringValues("Apprenticeship")
.setFilterable(true)
.build();
Job job =
Job.newBuilder()
.setCompany(companyId)
.setTitle("Software Developer I")
.setDescription("This is a description of this <i>wonderful</i> job!")
.putCustomAttributes("FOR_STUDENTS", customAttribute)
.setRequisitionId(requisitionId)
.setLanguageCode("en-US")
.build();
CreateJobRequest request =
CreateJobRequest.newBuilder().setParent(parent.toString()).setJob(job).build();
Job response = jobServiceClient.createJob(request);
System.out.printf("Created job: %s\n", response.getName());
}
}
}
Node.js
Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。
const talent = require('@google-cloud/talent').v4;
/**
* Create Job with Custom Attributes
*
* @param projectId {string} Your Google Cloud Project ID
* @param tenantId {string} Identifier of the Tenantd
*/
function sampleCreateJob(
projectId,
tenantId,
companyName,
requisitionId,
languageCode
) {
const client = new talent.JobServiceClient();
// const projectId = 'Your Google Cloud Project ID';
// const tenantId = 'Your Tenant ID (using tenancy is optional)';
// const companyName = 'Company name, e.g. projects/your-project/companies/company-id';
// const requisitionId = 'Job requisition ID, aka Posting ID. Unique per job.';
// const languageCode = 'en-US';
const formattedParent = client.tenantPath(projectId, tenantId);
const job = {
company: companyName,
requisitionId: requisitionId,
languageCode: languageCode,
};
const request = {
parent: formattedParent,
job: job,
};
client
.createJob(request)
.then(responses => {
const response = responses[0];
console.log(`Created job: ${response.name}`);
})
.catch(err => {
console.error(err);
});
}
Python
Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。
from google.cloud import talent
import six
def create_job(project_id, tenant_id, company_id, requisition_id):
"""Create Job with Custom Attributes"""
client = talent.JobServiceClient()
# project_id = 'Your Google Cloud Project ID'
# tenant_id = 'Your Tenant ID (using tenancy is optional)'
# company_id = 'Company name, e.g. projects/your-project/companies/company-id'
# requisition_id = 'Job requisition ID, aka Posting ID. Unique per job.'
# language_code = 'en-US'
if isinstance(project_id, six.binary_type):
project_id = project_id.decode("utf-8")
if isinstance(tenant_id, six.binary_type):
tenant_id = tenant_id.decode("utf-8")
if isinstance(company_id, six.binary_type):
company_id = company_id.decode("utf-8")
# Custom attribute can be string or numeric value,
# and can be filtered in search queries.
# https://cloud.google.com/talent-solution/job-search/docs/custom-attributes
custom_attribute = talent.CustomAttribute()
custom_attribute.filterable = True
custom_attribute.string_values.append("Intern")
custom_attribute.string_values.append("Apprenticeship")
parent = f"projects/{project_id}/tenants/{tenant_id}"
job = talent.Job(
company=company_id,
title="Software Engineer",
requisition_id=requisition_id,
description="This is a description of this job",
language_code="en-us",
custom_attributes={"FOR_STUDENTS": custom_attribute}
)
response = client.create_job(parent=parent, job=job)
print(f"Created job: {response.name}")
return response.name
Ruby
Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。
require "google/cloud/talent"
# Instantiate a client
job_service = Google::Cloud::Talent.job_service
# project_id = "Your Google Cloud Project ID"
# tenant_id = "Your Tenant ID (using tenancy is required)"
parent = job_service.tenant_path project: project_id, tenant: tenant_id
# title = "Software Engineer"
# description = "This is a description of this <i>wonderful</i> job!"
# company_name = "Company name, e.g. projects/your-project/companies/company-id"
# requisition_id = "Job requisition ID, aka Posting ID. Unique per job."
# language_code = "en-US"
job = {
title: title,
description: description,
company: company_name,
requisition_id: requisition_id,
language_code: language_code
}
response = job_service.create_job parent: parent, job: job
puts "Created job: #{response.name}"
C#
Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。
public static object CreateJobCustomAttributes(string projectId, string tenantId, string companyId, string requisitionId)
{
JobServiceClient jobServiceClient = JobServiceClient.Create();
TenantName tenantName = TenantName.FromProjectTenant(projectId, tenantId);
// Custom attribute can be string or numeric value, and can be filtered in search queries.
// https://cloud.google.com/talent-solution/job-search/docs/custom-attributes
CustomAttribute customAttributes = new CustomAttribute
{
Filterable = true
};
customAttributes.StringValues.Add("Internship");
customAttributes.StringValues.Add("Intern");
customAttributes.StringValues.Add("Apprenticeship");
Job job = new Job
{
Company = companyId,
RequisitionId = requisitionId,
Title = "Software Developer I",
Description = "This is a description of this <i>wonderful</i> job!",
LanguageCode = "en-US"
};
job.CustomAttributes.Add("FOR_STUDENTS", customAttributes);
CreateJobRequest request = new CreateJobRequest
{
ParentAsTenantName = tenantName,
Job = job
};
Job response = jobServiceClient.CreateJob(request);
Console.WriteLine($"Created Job: {response.Name}");
return 0;
}
求人の取得
GET オペレーションを使用して求人の詳細を取得することにより、求人が作成されたことを確認できます。Cloud Talent Solution に作成されている求人の現在の量により、求人が使用可能になるまでに数分かかる場合があります。
以前に挿入された求人の詳細を取得するには、GET リクエストを Cloud Talent Solution API に送信します。URI の中に、挿入済みの求人の name
を URL パラメータとして指定します。これは元の CREATE リクエストによって返された値です。
次の例では、GET 操作を使用して、指定された name
の求人の詳細を取得します。
Go
Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。
import (
"context"
"fmt"
"io"
talent "cloud.google.com/go/talent/apiv4beta1"
talentpb "google.golang.org/genproto/googleapis/cloud/talent/v4beta1"
)
// getJob gets an existing job by its resource name.
func getJob(w io.Writer, projectID, jobID string) (*talentpb.Job, error) {
ctx := context.Background()
// Initialize a jobService client.
c, err := talent.NewJobClient(ctx)
if err != nil {
fmt.Printf("talent.NewJobClient: %v\n", err)
return nil, err
}
// Construct a getJob request.
jobName := fmt.Sprintf("projects/%s/jobs/%s", projectID, jobID)
req := &talentpb.GetJobRequest{
// The resource name of the job to retrieve.
// The format is "projects/{project_id}/jobs/{job_id}".
Name: jobName,
}
resp, err := c.GetJob(ctx, req)
if err != nil {
fmt.Printf("Failed to get job %s: %v\n", jobName, err)
return nil, err
}
fmt.Fprintf(w, "Job: %q\n", resp.GetName())
fmt.Fprintf(w, "Job title: %v\n", resp.GetTitle())
return resp, err
}
Java
Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。
import com.google.cloud.talent.v4.GetJobRequest;
import com.google.cloud.talent.v4.Job;
import com.google.cloud.talent.v4.JobName;
import com.google.cloud.talent.v4.JobServiceClient;
import java.io.IOException;
public class JobSearchGetJob {
public static void getJob() throws IOException {
// TODO(developer): Replace these variables before running the sample.
String projectId = "your-project-id";
String tenantId = "your-tenant-id";
String jobId = "your-job-id";
getJob(projectId, tenantId, jobId);
}
// Get Job.
public static void getJob(String projectId, String tenantId, String jobId) throws IOException {
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests. After completing all of your requests, call
// the "close" method on the client to safely clean up any remaining background resources.
try (JobServiceClient jobServiceClient = JobServiceClient.create()) {
JobName name = JobName.of(projectId, tenantId, jobId);
GetJobRequest request = GetJobRequest.newBuilder().setName(name.toString()).build();
Job response = jobServiceClient.getJob(request);
System.out.format("Job name: %s%n", response.getName());
System.out.format("Requisition ID: %s%n", response.getRequisitionId());
System.out.format("Title: %s%n", response.getTitle());
System.out.format("Description: %s%n", response.getDescription());
System.out.format("Posting language: %s%n", response.getLanguageCode());
for (String address : response.getAddressesList()) {
System.out.format("Address: %s%n", address);
}
for (String email : response.getApplicationInfo().getEmailsList()) {
System.out.format("Email: %s%n", email);
}
for (String websiteUri : response.getApplicationInfo().getUrisList()) {
System.out.format("Website: %s%n", websiteUri);
}
}
}
}
Node.js
Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。
const talent = require('@google-cloud/talent').v4;
/** Get Job */
function sampleGetJob(projectId, tenantId, jobId) {
const client = new talent.JobServiceClient();
// const projectId = 'Your Google Cloud Project ID';
// const tenantId = 'Your Tenant ID (using tenancy is optional)';
// const jobId = 'Job ID';
const formattedName = client.jobPath(projectId, tenantId, jobId);
client
.getJob({name: formattedName})
.then(responses => {
const response = responses[0];
console.log(`Job name: ${response.name}`);
console.log(`Requisition ID: ${response.requisitionId}`);
console.log(`Title: ${response.title}`);
console.log(`Description: ${response.description}`);
console.log(`Posting language: ${response.languageCode}`);
for (const address of response.addresses) {
console.log(`Address: ${address}`);
}
for (const email of response.applicationInfo.emails) {
console.log(`Email: ${email}`);
}
for (const websiteUri of response.applicationInfo.uris) {
console.log(`Website: ${websiteUri}`);
}
})
.catch(err => {
console.error(err);
});
}
Python
Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。
from google.cloud import talent
import six
def get_job(project_id, tenant_id, job_id):
"""Get Job"""
client = talent.JobServiceClient()
# project_id = 'Your Google Cloud Project ID'
# tenant_id = 'Your Tenant ID (using tenancy is optional)'
# job_id = 'Job ID'
if isinstance(project_id, six.binary_type):
project_id = project_id.decode("utf-8")
if isinstance(tenant_id, six.binary_type):
tenant_id = tenant_id.decode("utf-8")
if isinstance(job_id, six.binary_type):
job_id = job_id.decode("utf-8")
name = client.job_path(project_id, tenant_id, job_id)
response = client.get_job(name=name)
print(f"Job name: {response.name}")
print(f"Requisition ID: {response.requisition_id}")
print(f"Title: {response.title}")
print(f"Description: {response.description}")
print(f"Posting language: {response.language_code}")
for address in response.addresses:
print(f"Address: {address}")
for email in response.application_info.emails:
print(f"Email: {email}")
for website_uri in response.application_info.uris:
print(f"Website: {website_uri}")
Ruby
Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。
require "google/cloud/talent"
# Instantiate a client
job_service = Google::Cloud::Talent.job_service
# project_id = "Your Google Cloud Project ID"
# tenant_id = "Your Tenant ID (using tenancy is required)"
# job_id = "Job ID"
formatted_name = job_service.job_path project: project_id,
tenant: tenant_id,
job: job_id
response = job_service.get_job name: formatted_name
puts "Job name: #{response.name}"
puts "Requisition ID: #{response.requisition_id}"
puts "Title: #{response.title}"
puts "Description: #{response.description}"
puts "Posting language: #{response.language_code}"
response.addresses.each do |address|
puts "Address: #{address}"
end
response.application_info.emails.each do |email|
puts "Email: #{email}"
end
response.application_info.uris.each do |website_uri|
puts "Website: #{website_uri}"
end
C#
Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。
public static object GetJob(string projectId, string tenantId, string jobId)
{
JobServiceClient jobServiceClient = JobServiceClient.Create();
JobName jobName = JobName.FromProjectTenantJob(projectId, tenantId, jobId);
GetJobRequest request = new GetJobRequest
{
JobName = jobName
};
var response = jobServiceClient.GetJob(request);
Console.WriteLine($"Job name: {response.Name}");
Console.WriteLine($"Requisition ID: {response.RequisitionId}");
Console.WriteLine($"Title: {response.Title}");
Console.WriteLine($"Description: {response.Description}");
Console.WriteLine($"Posting language: {response.LanguageCode}");
foreach (string address in response.Addresses)
{
Console.WriteLine($"Address: {address}");
}
foreach (string email in response.ApplicationInfo.Emails)
{
Console.WriteLine($"Email: {email}");
}
foreach (string websiteUri in response.ApplicationInfo.Uris)
{
Console.WriteLine($"Website: {websiteUri}");
}
return 0;
}
求人を検索する
Cloud Talent Solution を使用して最初の Company と Job を作成しました。これで、この Job すべてにわたって検索を実行する準備ができました。
その他の API
利用可能な API とさまざまな構成の詳細については、最新のリファレンス ドキュメントをご覧ください。