Dasar-dasar lowongan (v3)

Resource Job merepresentasikan postingan lowongan (juga disebut sebagai "listingan lowongan" atau "permintaan lowongan"). Lowongan kerja termasuk dalam Perusahaan yang merupakan entitas perekrutan yang bertanggung jawab atas lowongan kerja tersebut.

Job dapat dimanipulasi menggunakan metode pembuatan, pembaruan, dan penghapusan, serta diakses menggunakan metode daftar dan pengambilan. Diperlukan waktu hingga 5 menit agar indeks Cloud Talent Solution mencerminkan perubahan.

Pekerjaan berada dalam cakupan akun layanan. Hanya permintaan penelusuran yang diautentikasi menggunakan kredensial akun layanan tertentu yang dapat digunakan untuk mengakses konten tugas ini.

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

Buat tugas

Untuk membuat tugas, lihat Panduan memulai cepat: Membuat perusahaan dan tugas untuk mengetahui detail selengkapnya.

Java

Untuk mengetahui informasi lebih lanjut 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 lebih lanjut 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 lebih lanjut 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 wajib diisi selama pembuatan dan pembaruan Job:

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

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

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

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

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

  • description: Deskripsi lowongan, yang biasanya mencakup deskripsi multi-paragraf tentang perusahaan dan informasi terkait. Kolom terpisah disediakan pada objek pekerjaan untuk tanggung jawab, kualifikasi, dan karakteristik pekerjaan lainnya. Sebaiknya gunakan kolom pekerjaan terpisah ini.

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

Salah satu dari berikut ini:

  • applicationInfo.uris[]: URL halaman aplikasi.

  • applicationInfo.emails[]: Alamat email yang akan menerima resume atau lamaran.

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

Kolom yang biasa digunakan

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

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

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

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

Kolom kustom

  • customAttributes: Kolom ini menyimpan hingga 100 atribut kustom 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, kolom ini dapat ditetapkan di 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

Memperbarui Tugas tanpa fieldMask

Java

Untuk mengetahui informasi lebih lanjut 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 lebih lanjut 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 lebih lanjut 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 Pekerjaan dengan fieldMask

Java

Untuk mengetahui informasi lebih lanjut 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 lebih lanjut 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 lebih lanjut 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 jalan pekerjaan di kolom addresses[]. Hal ini membantu deteksi dan relevansi lokasi. 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[] (khusus output). Jika alamat lengkap tidak diberikan, layanan menggunakan sinyal lain, seperti nama perusahaan, untuk menentukan apakah alamat yang lebih lengkap dapat disimpulkan untuk postingan lowongan kerja.

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

Jika data alamat perusahaan tidak tersedia, layanan ini menggunakan kombinasi pengetahuan eksklusif dan informasi pekerjaan/perusahaan untuk mengisi kolom derivedInfo.locations[].

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

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

Alamat yang didukung

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

Jika alamat bisnis tercantum dengan salah di Google Maps Geocoding API, ajukan bug agar alamat tersebut diperbaiki. 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 kerja di seluruh negara bagian, di seluruh negara, dan telecommuting

Lowongan dapat ditentukan sebagai lowongan di seluruh negara bagian, di seluruh negara, atau telekomunikasi, menggunakan kolom postingRegion dari resource Job.

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

  • Lowongan TELECOMMUTE ditampilkan dalam penelusuran terkait lokasi, tetapi dianggap kurang relevan. Objek ini dapat ditargetkan dalam penelusuran dengan menyetel flag telecommutePreference ke TELECOMMUTE_ALLOWED dalam LocationFilter penelusuran.