Dasar-dasar lowongan (v3)

Resource Lowongan mewakili postingan lowongan (juga disebut sebagai "listingan lowongan" atau "permintaan lowongan"). Lowongan adalah milik Perusahaan yang merupakan entitas perekrutan yang bertanggung jawab atas lowongan tersebut.

Tugas dapat dimanipulasi menggunakan metode pembuatan, pembaruan, dan penghapusan, serta diakses menggunakan metode daftar dan dapatkan. Mungkin diperlukan waktu hingga 5 menit agar indeks Cloud Talent Solution mencerminkan perubahan.

Tugas 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 pemilihan prioritas, 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 di sistem Anda. Saat pekerjaan berubah atau diperkenalkan ke sistem Anda, panggilan CRUD yang sesuai harus dikirim ke Cloud Talent Solution secara real time untuk memastikan perubahan ini segera tercermin. Indeks Cloud Talent Solution harus ditambahkan ke pipeline penyerapan tugas yang ada.

Buat tugas

Untuk membuat lowongan, lihat Panduan memulai cepat: Membuat perusahaan dan lowongan 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 diperlukan selama pembuatan dan pembaruan Tugas:

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

  • requisitionId: ID permintaan, yang juga disebut sebagai ID postingan, 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 postingan lowongan ditentukan menggunakan kombinasi requisitionID, companyName, dan lokalitas lowongan. Jika tugas dibuat dengan kunci tertentu dari atribut ini, kunci ini akan disimpan di indeks Cloud Talent Solution dan tidak ada tugas lain dengan kolom yang sama ini yang dapat dibuat hingga tugas dihapus.

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

    Untuk memperbaiki masalah hasil penelusuran yang terlewat karena jabatan yang tidak standar, Cloud Talent Solution memanfaatkan semua kolom yang disediakan di Lowongan untuk memahami konteks lowongan dan menyimpan judul lowongan 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 multiparagraf tentang perusahaan dan informasi terkait. Kolom terpisah disediakan di objek lowongan untuk tanggung jawab, kualifikasi, dan karakteristik lowongan lainnya. Sebaiknya gunakan kolom pekerjaan terpisah ini.

    Kolom ini menerima dan membersihkan input HTML, serta menerima tag markup daftar tebal, miring, terurut, 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 tempat resume atau surat permohonan harus dikirim.

  • applicationInfo.instruction: Petunjuk permohonan, seperti "Kirimkan permohonan Anda ke ...". Kolom ini menerima dan membersihkan input HTML, serta menerima tag markup tebal, miring, daftar urut, dan daftar tidak urut. 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 tersebut, tugas akan ditandai sebagai berakhir, dan tidak akan muncul di hasil penelusuran. Tanggal ini harus sebelum 31/12/2100 di zona waktu UTC. Tanggal yang tidak valid (seperti tanggal yang sudah berlalu) akan diabaikan. Tanggal default saat tugas berakhir adalah 30 hari setelah waktu pembuatan tugas di zona waktu UTC.

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

  • addresses[]: Lokasi tempat lowongan tersebut dibuka. Menyediakan alamat jalan lengkap lokasi perekrutan direkomendasikan untuk mendapatkan hasil API yang lebih baik, termasuk penelusuran lowongan berdasarkan 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 tugas ini sebagai "tugas unggulan" yang hanya ditampilkan dalam penelusuran lowongan jenis FEATURED_JOBS. Nilai yang lebih tinggi akan 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, setiap kolom ini dapat ditetapkan di atribut keywordSearchableJobCustomAttributes perusahaan, sehingga istilah penelusuran yang memiliki pencocokan persis di salah satu kolom di keywordSearchableJobCustomAttributes akan menampilkan pekerjaan yang menyertakan pencocokan.

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
}

Memperbarui Tugas 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. Penunjukan 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 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 tempat lowongan tersebut dikaitkan 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 lowongan. Jika demikian, layanan akan memahami bahwa tugas "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 tebakan terbaik, sebaiknya gunakan data derivedInfo.locations[], atau kolom addresses, saat menampilkan alamat tugas.

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 Anda mengelompokkan lokasi yang paling dekat satu sama lain dalam tugas yang sama untuk pengalaman penelusuran yang lebih baik.

Alamat yang didukung

Setiap 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 salah tercantum di Google Maps Geocoding API, laporkan bug agar diperbaiki. Mungkin perlu waktu hingga 5 hari untuk menerapkan koreksi.

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 sugesti isi otomatis.

Lowongan di seluruh negara bagian, seluruh negara, dan pekerjaan jarak jauh

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

  • 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 diperlakukan sebagai kurang relevan. Cluster tersebut dapat ditargetkan dalam penelusuran dengan menetapkan tanda telecommutePreference ke TELECOMMUTE_ALLOWED di LocationFilter penelusuran.