Dasar-dasar pekerjaan (v3)

Resource pekerjaan mewakili postingan lowongan (juga disebut sebagai "listingan pekerjaan" atau "permintaan pekerjaan"). Pekerjaan adalah milik Perusahaan yang merupakan entitas perekrutan yang bertanggung jawab untuk pekerjaan itu.

Tugas dapat dimanipulasi menggunakan metode create, update, dan penghapusan, serta diakses menggunakan metode list dan get. Diperlukan waktu hingga 5 menit agar indeks Cloud Talent Solution menampilkan perubahan.

Tugas dimuat dalam cakupan akun layanan. Hanya permintaan penelusuran yang diautentikasi menggunakan kredensial akun layanan tertentu yang dapat digunakan untuk mengakses konten tugas tersebut.

Untuk memudahkan pemecahan masalah dan triase, sinkronkan indeks tugas Cloud Talent Solution dengan indeks tugas Anda sendiri, dan pertahankan hubungan antara name yang dihasilkan oleh Cloud Talent Solution serta ID tugas unik di sistem Anda. Seiring dengan perubahan atau penerapan pekerjaan ke dalam sistem Anda, panggilan CRUD yang sesuai harus dikirim ke Cloud Talent Solution secara real time untuk memastikan perubahan ini segera diterapkan. Indeks Cloud Talent Solution harus ditambahkan ke pipeline penyerapan tugas yang ada.

Membuat tugas

Untuk membuat lowongan, lihat Panduan memulai: Membuat perusahaan dan lowongan pekerjaan untuk mengetahui detail selengkapnya.

Java

Untuk mengetahui informasi selengkapnya tentang cara menginstal dan membuat klien Cloud Talent Solution, lihat Library Klien Cloud Talent Solution.


/** Create a job. */
public static Job createJob(Job jobToBeCreated) throws IOException {
  try {
    CreateJobRequest createJobRequest = new CreateJobRequest().setJob(jobToBeCreated);

    Job jobCreated =
        talentSolutionClient
            .projects()
            .jobs()
            .create(DEFAULT_PROJECT_ID, createJobRequest)
            .execute();
    System.out.println("Job created: " + jobCreated);
    return jobCreated;
  } catch (IOException e) {
    System.out.println("Got exception while creating job");
    throw e;
  }
}

Python

Untuk mengetahui informasi selengkapnya tentang cara menginstal dan membuat klien Cloud Talent Solution, lihat Library Klien Cloud Talent Solution.

def create_job(client_service, job_to_be_created):
    try:
        request = {"job": job_to_be_created}
        job_created = (
            client_service.projects()
            .jobs()
            .create(parent=parent, body=request)
            .execute()
        )
        print("Job created: %s" % job_created)
        return job_created
    except Error as e:
        print("Got exception while creating job")
        raise e

Go

Untuk mengetahui informasi selengkapnya tentang cara menginstal dan membuat klien Cloud Talent Solution, lihat Library Klien Cloud Talent Solution.


// createJob create a job as given.
func createJob(w io.Writer, projectID string, jobToCreate *talent.Job) (*talent.Job, error) {
	ctx := context.Background()

	client, err := google.DefaultClient(ctx, talent.CloudPlatformScope)
	if err != nil {
		return nil, fmt.Errorf("google.DefaultClient: %w", err)
	}
	// Create the jobs service client.
	service, err := talent.New(client)
	if err != nil {
		return nil, fmt.Errorf("talent.New: %w", err)
	}

	parent := "projects/" + projectID
	req := &talent.CreateJobRequest{
		Job: jobToCreate,
	}
	job, err := service.Projects.Jobs.Create(parent, req).Do()
	if err != nil {
		return nil, fmt.Errorf("Failed to create job %q, Err: %w", jobToCreate.RequisitionId, err)
	}
	return job, err
}

Kolom wajib diisi

Kolom berikut diperlukan selama pembuatan dan pembaruan Lowongan:

  • companyName: Nama resource perusahaan yang mencantumkan lowongan, seperti projects/[PROJECT_ID]/companies/[COMPANY_ID].

  • requisitionId: ID permintaan, juga disebut sebagai ID postingan, yang ditetapkan oleh klien untuk mengidentifikasi pekerjaan. Bidang ini dimaksudkan untuk digunakan oleh klien untuk identifikasi klien dan pelacakan permintaan. Jumlah karakter maksimum yang diizinkan adalah 225.

    Keunikan postingan lowongan ditentukan menggunakan kombinasi requisitionID, companyName, dan lokalitas lowongan. Jika tugas dibuat dengan kunci tertentu dari atribut ini, kunci tersebut akan disimpan dalam indeks Cloud Talent Solution dan tugas lain dengan kolom yang sama ini tidak dapat dibuat hingga tugas tersebut dihapus.

  • title: Nama pekerjaan, misalnya "Software Engineer". Jumlah karakter maksimum yang diizinkan adalah 500.

    Untuk mengatasi masalah hasil penelusuran yang terlewat karena jabatan yang tidak standar, Cloud Talent Solution memanfaatkan semua kolom yang disediakan dalam Lowongan tersebut untuk memahami konteks tugas dan menyimpan judul pekerjaan yang "bersih" secara internal. Saat permintaan penelusuran dikirim ke layanan, kueri penelusuran juga akan dibersihkan, dan ontologi akan digunakan untuk memetakan kueri yang sudah dibersihkan ke tugas bersih yang relevan.

  • description: Deskripsi pekerjaan, yang biasanya mencakup deskripsi perusahaan dalam beberapa paragraf dan informasi terkait. Kolom terpisah disediakan di objek tugas untuk tanggung jawab, kualifikasi, dan karakteristik tugas lainnya. Sebaiknya gunakan kolom pekerjaan yang terpisah ini.

    Kolom ini menerima dan membersihkan input HTML, serta menerima tag markup daftar yang dicetak tebal, miring, dan tidak diurutkan. Jumlah karakter maksimum yang diizinkan adalah 100.000.

Salah satu dari berikut ini:

  • applicationInfo.uris[]: URL halaman aplikasi.

  • applicationInfo.emails[]: Alamat email tujuan pengiriman resume atau lamaran.

  • applicationInfo.instruction: Petunjuk aplikasi, seperti "Kirimkan aplikasi Anda ke ...". Kolom ini menerima dan membersihkan input HTML, serta menerima tag markup daftar yang dicetak tebal, miring, diurutkan, dan tidak diurutkan. Jumlah karakter maksimum yang diizinkan adalah 3.000.

Kolom yang biasa digunakan

  • postingExpireTime: Waktu, berdasarkan stempel waktu, saat masa berlaku postingan lowongan berakhir. Setelah waktu itu terjadi, tugas ditandai sebagai sudah tidak berlaku, dan tidak akan muncul di hasil penelusuran. Tanggal ini harus sebelum 2100/12/31 dalam zona waktu UTC. Tanggal yang tidak valid (misalnya tanggal yang sudah lewat) akan diabaikan. Tanggal default saat tugas berakhir adalah 30 hari setelah waktu pembuatan tugas dalam zona waktu UTC.

    Konten lowongan yang sudah ditutup masih dapat diambil hingga 60 hari setelah tugas berakhir menggunakan operator GET. Setelah batas waktu 60 hari ini, tugas tidak akan dikembalikan melalui operasi GET.

  • addresses[]: Lokasi tempat lowongan dibuka. Sebaiknya berikan alamat lengkap lokasi perekrutan untuk memungkinkan hasil API yang lebih baik, termasuk penelusuran lowongan menurut waktu perjalanan. Jumlah maksimum karakter yang diizinkan adalah 500. Informasi selengkapnya tentang addresses[] tersedia di bagian Praktik terbaik di bawah.

  • promotionValue: Nilai yang lebih besar dari 0 menentukan pekerjaan ini sebagai "tugas unggulan" yang hanya ditampilkan dalam penelusuran tugas jenis FEATURED_JOBS. Nilai yang lebih tinggi ditampilkan lebih tinggi dalam hasil penelusuran unggulan. Lihat Tugas Unggulan untuk informasi selengkapnya.

Kolom kustom

  • customAttributes: Kolom ini menyimpan hingga 100 atribut khusus yang digunakan untuk menyimpan data kustom tentang tugas. Kolom ini dapat difilter menggunakan permintaan penelusuran yang menentukan kolom jobQuery dari permintaan penelusuran lowongan. Selain itu, salah satu kolom ini dapat ditetapkan dalam atribut keywordSearchableJobCustomAttributes perusahaan, sehingga istilah penelusuran yang memiliki kecocokan persis di salah satu kolom di keywordSearchableJobCustomAttributes akan menampilkan pekerjaan apa pun yang menyertakan kecocokan tersebut.

Memperbarui tugas

Perbarui Lowongan tanpa fieldMask

Java

Untuk mengetahui informasi selengkapnya tentang cara menginstal dan membuat klien Cloud Talent Solution, lihat Library Klien Cloud Talent Solution.


/** Update a job. */
public static Job updateJob(String jobName, Job jobToBeUpdated) throws IOException {
  try {
    UpdateJobRequest updateJobRequest = new UpdateJobRequest().setJob(jobToBeUpdated);
    Job jobUpdated =
        talentSolutionClient.projects().jobs().patch(jobName, updateJobRequest).execute();
    System.out.println("Job updated: " + jobUpdated);
    return jobUpdated;
  } catch (IOException e) {
    System.out.println("Got exception while updating job");
    throw e;
  }
}

Python

Untuk mengetahui informasi selengkapnya tentang cara menginstal dan membuat klien Cloud Talent Solution, lihat Library Klien Cloud Talent Solution.

def update_job(client_service, job_name, job_to_be_updated):
    try:
        request = {"job": job_to_be_updated}
        job_updated = (
            client_service.projects()
            .jobs()
            .patch(name=job_name, body=request)
            .execute()
        )
        print("Job updated: %s" % job_updated)
        return job_updated
    except Error as e:
        print("Got exception while updating job")
        raise e

Go

Untuk mengetahui informasi selengkapnya tentang cara menginstal dan membuat klien Cloud Talent Solution, lihat Library Klien Cloud Talent Solution.


// updateJob update a job with all fields except name.
func updateJob(w io.Writer, jobName string, jobToUpdate *talent.Job) (*talent.Job, error) {
	ctx := context.Background()

	client, err := google.DefaultClient(ctx, talent.CloudPlatformScope)
	if err != nil {
		return nil, fmt.Errorf("google.DefaultClient: %w", err)
	}
	// Create the jobs service client.
	service, err := talent.New(client)
	if err != nil {
		return nil, fmt.Errorf("talent.New: %w", err)
	}

	req := &talent.UpdateJobRequest{
		Job: jobToUpdate,
	}
	job, err := service.Projects.Jobs.Patch(jobName, req).Do()
	if err != nil {
		return nil, fmt.Errorf("Failed to update job %s: %w", jobName, err)
	}

	return job, err
}

Perbarui Lowongan dengan fieldMask

Java

Untuk mengetahui informasi selengkapnya tentang cara menginstal dan membuat klien Cloud Talent Solution, lihat Library Klien Cloud Talent Solution.


/** Update a job. */
public static Job updateJobWithFieldMask(String jobName, String fieldMask, Job jobToBeUpdated)
    throws IOException {
  try {
    UpdateJobRequest updateJobRequest =
        new UpdateJobRequest().setUpdateMask(fieldMask).setJob(jobToBeUpdated);
    Job jobUpdated =
        talentSolutionClient.projects().jobs().patch(jobName, updateJobRequest).execute();
    System.out.println("Job updated: " + jobUpdated);
    return jobUpdated;
  } catch (IOException e) {
    System.out.println("Got exception while updating job");
    throw e;
  }
}

Python

Untuk mengetahui informasi selengkapnya tentang cara menginstal dan membuat klien Cloud Talent Solution, lihat Library Klien Cloud Talent Solution.

def update_job_with_field_mask(client_service, job_name, job_to_be_updated, field_mask):
    try:
        request = {"job": job_to_be_updated, "update_mask": field_mask}
        job_updated = (
            client_service.projects()
            .jobs()
            .patch(name=job_name, body=request)
            .execute()
        )
        print("Job updated: %s" % job_updated)
        return job_updated
    except Error as e:
        print("Got exception while updating job with field mask")
        raise e

Go

Untuk mengetahui informasi selengkapnya tentang cara menginstal dan membuat klien Cloud Talent Solution, lihat Library Klien Cloud Talent Solution.


// updateJobWithMask updates a job by name with specific fields.
// mask is a comma separated list top-level fields of talent.Job.
func updateJobWithMask(w io.Writer, jobName string, mask string, jobToUpdate *talent.Job) (*talent.Job, error) {
	ctx := context.Background()

	client, err := google.DefaultClient(ctx, talent.CloudPlatformScope)
	if err != nil {
		return nil, fmt.Errorf("google.DefaultClient: %w", err)
	}
	// Create the jobs service client.
	service, err := talent.New(client)
	if err != nil {
		return nil, fmt.Errorf("talent.New: %w", err)
	}

	req := &talent.UpdateJobRequest{
		Job:        jobToUpdate,
		UpdateMask: mask,
	}
	job, err := service.Projects.Jobs.Patch(jobName, req).Do()
	if err != nil {
		log.Fatalf("Failed to update job %s with field mask %s, Err: %v", jobName, mask, err)
	}

	return job, err
}

Praktik terbaik

Kolom lokasi

Jika memungkinkan, sebaiknya berikan alamat lowongan di kolom addresses[]. Hal ini membantu mendeteksi lokasi dan relevansi. Jika alamat tingkat jalan tidak tersedia, masukkan informasi sebanyak mungkin. Alamat didukung hingga tingkat negara. Penetapan wilayah (seperti "Pacific Northwest") tidak didukung.

Cloud Talent Solution menggunakan data di kolom addresses[] untuk mengisi kolom derivedInfo.locations[] (hanya output). Jika alamat lengkap tidak diberikan, layanan akan menggunakan sinyal lain, seperti nama perusahaan, untuk menentukan apakah alamat yang lebih lengkap dapat disimpulkan untuk postingan lowongan.

Misalnya, jika lokasi lowongan software ditentukan sebagai Mountain View, dan perusahaan yang dikaitkan dengan lowongan tersebut adalah Google, layanan akan mencari objek perusahaan untuk melihat apakah alamat yang lebih baik diberikan di kolom headquartersAddress dan apakah alamat tersebut berada di kota yang sama dengan postingan lowongan. Jika demikian, layanan memahami bahwa pekerjaan "mungkin" di alamat tersebut dan mengisi kolom derivedInfo.locations[] dengan tepat.

Jika data alamat perusahaan tidak tersedia, layanan akan menggunakan kombinasi pengetahuan kepemilikan dan informasi pekerjaan/perusahaan untuk menentukan kolom derivedInfo.locations[].

Karena nilai derivedInfo.locations[] adalah upaya perkiraan terbaik, Anda mungkin ingin menggunakan data derivedInfo.locations[], atau kolom addresses, saat menampilkan alamat lowongan.

Postingan lowongan tidak boleh memiliki lebih dari 50 lokasi yang terkait dengannya. Jika tugas memiliki lebih banyak lokasi, Anda dapat membagi tugas menjadi beberapa tugas masing-masing dengan requisitionId unik (misalnya 'ReqA' , 'ReqA-1', 'ReqA-2', dll.) karena memiliki beberapa tugas dengan requisitionId, companyName, dan languageCode yang sama tidak diizinkan. Jika requisitionId asli harus dipertahankan, CustomAttribute harus digunakan untuk penyimpanan. Sebaiknya kelompokkan lokasi yang paling dekat satu sama lain dalam pekerjaan yang sama untuk pengalaman penelusuran yang lebih baik.

Alamat yang didukung

Semua alamat yang dikenali oleh Google Maps Geocoding API (di kolom formattedAddress) diterima oleh Cloud Talent Solution. Layanan ini menampilkan error 400 jika Anda mencoba membuat tugas atau menjalankan penelusuran menggunakan alamat yang tidak dikenal.

Jika alamat bisnis tidak tercantum dengan benar di Google Maps Geocoding API, laporkan bug untuk memperbaikinya. Koreksi mungkin memerlukan waktu hingga 5 hari untuk diterapkan.

Pelengkapan otomatis alamat

Cloud Talent Solution tidak memberikan saran pelengkapan otomatis untuk lokasi. Gunakan Google Maps Places API, atau layanan lokasi serupa lainnya, untuk mengisi saran pelengkapan otomatis.

Lowongan di seluruh negara bagian, nasional, dan dari jarak jauh

Tugas dapat ditentukan sebagai seluruh negara bagian, nasional, atau dari jarak jauh, menggunakan kolom postingRegion dari resource Lowongan.

  • Tugas ADMINISTRATIVE_AREA dan NATION ditampilkan untuk penelusuran apa pun yang lokasinya ada di dalam negara bagian/negara tempat postingan lowongan. Misalnya, jika tugas ADMINISTRATIVE_AREA memiliki lokasi "WA, USA", tugas tersebut akan ditampilkan untuk penelusuran dengan LocationFilter yang menentukan "Seattle".

  • Tugas TELECOMMUTE ditampilkan dalam penelusuran terkait lokasi, tetapi diperlakukan sebagai kurang relevan. Peristiwa ini dapat ditargetkan dalam penelusuran dengan menetapkan tanda telecommutePreference ke TELECOMMUTE_ALLOWED dalam LocationFilter penelusuran.