Job Search API dengan Google Cloud

Dalam codelab ini, Anda akan mempelajari cara meningkatkan penelusuran lowongan dan akuisisi bakat untuk organisasi Anda menggunakan Cloud Talent Solution API (CTS). Dengan CTS, Anda dapat menambahkan kecanggihan machine learning ke pengalaman penelusuran lowongan!

Yang akan Anda pelajari

  • Mengaktifkan CTS dalam project Google Cloud Anda
  • Membuat "Perusahaan" entitas dan pekerjaan di perusahaan tersebut

Yang Anda butuhkan

  • Project Google Cloud dengan Penagihan sudah disiapkan (Buatlah jika Anda belum memilikinya.
  • Sekitar 1 jam

Bagaimana Anda akan menggunakan tutorial ini?

Hanya membacanya Membacanya dan menyelesaikan latihan

Bagaimana penilaian Anda terhadap pengalaman sebelumnya dengan Google Cloud Platform?

Pemula Menengah Pakar

Tutorial ini dimaksudkan untuk berjalan sepenuhnya di Google Cloud Platform. Download tidak diperlukan untuk komputer kerja Anda.

Mengaktifkan Cloud Talent Solutions API

Buka aplikasi di Cloud Console dan klik menu tiga garis di kiri atas. Lihat menu untuk Solusi Talent -> Ringkasan.

Karena ini adalah project baru, Anda akan dialihkan ke layar baru yang meminta Anda mengaktifkan API. Klik aktifkan dan tunggu beberapa menit agar API diaktifkan untuk project ini.

Mengaktifkan Logging data

Sekarang kembali ke halaman ringkasan dari sebelumnya. Dialog baru akan muncul yang meminta Anda mengaktifkan logging data (jika tidak, kembali ke halaman dialog dari sebelumnya). Ini benar-benar untuk memastikan Anda tahu bahwa Job Search API didukung oleh model machine learning yang membutuhkan data. Sebagai bagian dari integrasi, Anda sebenarnya dapat mengirim peristiwa dari pengguna yang melakukan penelusuran untuk melatih model tersebut lebih lanjut. Saat ini diimplementasikan melalui kode, Anda bisa menetapkan informasi apa yang dikirimkan.

Kita akan membahas peristiwa tersebut lebih dalam dan cara mengirimkannya nanti, tetapi model terlatih akan berfungsi dengan baik. Lanjutkan dan aktifkan logging data, lalu klik "koneksi akun layanan" di panel navigasi sebelah kiri pada dialog ini.

Menyiapkan Akun Layanan

Saat membuat permintaan API, Anda harus membuatnya atas nama akun yang sebenarnya diautentikasi. Praktik terbaik Google Cloud Platform merekomendasikan penyiapan akun layanan untuk hal ini. Anggap akun layanan sebagai cara mudah untuk menyiapkan pengguna terautentikasi yang memiliki izin terbatas. Hal ini akan membantu Anda membangun sistem yang independen dan aman.

Misalnya, kita memerlukan akun layanan untuk menggunakan Job Search API. Mari kita buat satu dan berikan izin baca/tulis menggunakan "Job Editor" di bagian "Cloud Talent Solution" dari navigasi sebelah kiri. Anda juga dapat menyiapkan akun layanan hanya dengan "Job Viewer" sehingga hanya akan memiliki akses hanya baca.

Langkah berikutnya akan menanyakan apakah Anda ingin memberikan akses ke akun layanan ini kepada pengguna. Anda dapat melewati langkah ini, namun pastikan untuk mengeklik "Buat Kunci" di dekat bagian bawah. Pilih "JSON" untuk jenis kunci lalu "Buat". File kredensial JSON baru akan didownload secara otomatis. Simpan file ini di server Anda, kode yang Anda tulis di bagian berikutnya akan digunakan untuk mengautentikasi.

Menetapkan variabel lingkungan

Agar mudah, kami akan menggunakan Google Cloud Shell. Jika Anda ingin melakukan ini dari lingkungan pengembangan Anda sendiri, bagus! Pastikan Anda menginstal Google Cloud SDK dan library klien dalam bahasa pilihan Anda (codelab ini akan menggunakan Python.). Cloud shell sudah memiliki library klien cloud yang terinstal. Berguna, bukan?

Untuk menjalankan kode menggunakan library, Anda harus memastikan dua variabel lingkungan ditetapkan: Satu untuk menentukan ID konfigurasi, yang lainnya untuk menentukan file kunci akun layanan Anda. Ayo kita setel.

Dari project Anda, klik ikon ">_" di kanan atas konsol web Anda untuk membuka cloud shell. Tambahkan variabel lingkungan berikut untuk menentukan project ID Anda dan setel jalur ke file kunci json:

export GOOGLE_CLOUD_PROJECT="your-project-id"
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/key.json"

Untuk memverifikasi bahwa variabel ditetapkan, gunakan `echo`.

echo $GOOGLE_CLOUD_PROJECT
echo $GOOGLE_APPLICATION_CREDENTIALS

Buka editor kode di Cloud Shell

Dari Google Cloud Console, buka Cloud Shell menggunakan ikon Cloud Shell di kanan atas.

Di sepanjang kanan atas Cloud Shell akan terdapat serangkaian ikon. Klik File -> Luncurkan Editor Kode , seperti yang ditampilkan di sini:

Membuat Perusahaan

Gunakan File -> File Baru untuk membuat file sumber baru, dan isi dengan konten di bawah. Beri nama create_company.py.

create_company.py

import os

from googleapiclient.discovery import build
from googleapiclient.errors import Error

# Build the service object, passing in the api name and api version
client_service = build('jobs', 'v3')
project_id = 'projects/' + os.environ['GOOGLE_CLOUD_PROJECT']


# Specifying details for the company that's going to be created.
# These are the only two required fields.
# Optional fields are documented at
# http://googleapis.github.io/google-api-python-client/docs/dyn/jobs_v3.projects.companies.html#create
new_company = {
    'display_name': "FooCorp",
    'external_id': "foo_llc"
}
request = {'company': new_company}

try:

    # This is the API call that actually creates the new company.
    result = client_service.projects().companies().create(
       parent=project_id, body=request).execute()

    # You can easily just print the result as a string if you want
    print('Company created: %s' % result)

    # Or you can individual fields.  The fields returned depend on what's specified
    # in the "new_company" object.  To see possible fields of the
    # response, see the "create" documentation at:
    # http://googleapis.github.io/google-api-python-client/docs/dyn/jobs_v3.projects.companies.html#create
    print('%s: %s, %s' % (result.get('externalId'),
                       result.get('displayName'),
                       result.get('name')))

except Error as e:
    print('Got exception while creating company')
    raise e

Apa yang dilakukan kode ini? Mari jelajahi! Ada dua panggilan library klien yang relevan di sini:

  • client_service = build('jobs', 'v3') membuat objek layanan menggunakan library klien python Google API.
  • client_service.projects().companies().create(parent=project_id, body=request).execute() menjalankan panggilan API untuk membuat perusahaan. Respons terhadap panggilan ini adalah objek yang berisi informasi perusahaan. Isi objek permintaan dan objek respons diatur dalam dokumentasi untuk metode pembuatan.

Jalankan file dari command prompt (yang sangat membantu langsung di bawah jendela editor kode), dan Anda akan melihat sesuatu yang mirip dengan output berikut.

> python create_company.py
Company created: {u'externalId': u'foo_llc', u'displayName': u'FooCorp', u'name': u'projects/[PROJECT_ID]/companies/1cd6ada9-e678-49cf-80da-aaaf8876feda'}
Foo_llc, FooCorp, projects/[PROJECT_ID]/companies/1cd6ada9-e678-49cf-80da-aaaf8876feda 

Name adalah ID unik yang dibuat oleh Job Search API, sedangkan external_id adalah ID yang Anda berikan dari sistem tugas sendiri. Setiap kali Anda merujuk ke objek melalui API, Anda harus menggunakan nama.

Perusahaan Pembaruan

Jika Anda sudah memiliki entitas perusahaan dalam sistem dan ingin menambahkan atau mengubah beberapa kolom, prosesnya akan terbagi menjadi langkah-langkah berikut:

  • Buat Objek dengan nilai kolom saat ini untuk perusahaan
  • Perbarui objek tersebut dengan kolom baru atau yang diperbarui, menggunakan kolom "nama" perusahaan sebagai kunci agar API mengetahui perusahaan mana yang akan diperbarui
  • Kirimkan objek baru menggunakan metode &"patch".

Perhatikan bahwa proses ini mengharuskan Anda memiliki semua nilai yang ada, karena tindakan tersebut akan menimpa nilai perusahaan sekaligus, terlepas dari nilai sebenarnya yang Anda perbarui. Artinya, sebelum kami memperbarui informasi perusahaan, kami perlu mengambilnya.

Buat file baru, update_company.py di ruang kerja Anda. Mulai jika nonaktif dengan menambahkan metode get_company yang ditampilkan di bawah.

update_company.py

import os

from googleapiclient.discovery import build
from googleapiclient.errors import Error

# Build the service object, passing in the api name and api version
client_service = build('jobs', 'v3')
project_id = 'projects/' + os.environ['GOOGLE_CLOUD_PROJECT']
company_name = 'Your company name goes here'


def get_company(company_name):
   try:
       company_existed = client_service.projects().companies().get(
           name=company_name).execute()
       print('Company existed: %s' % company_existed)
       return company_existed
   except Error as e:
       print('Got exception while getting company')
       raise e


newCompany = get_company()

Satu hal yang akan Anda perhatikan pada tahap ini adalah bahwa panggilan API tampak sangat mirip dengan membuat perusahaan. Library klien dibuat agar sesuai dengan antarmuka REST. Jadi, operasi CRUD yang Anda lakukan pada perusahaan akan menggunakan format client_service.projects().companies().theMethod(argName=argValue).execute().

Sekarang setelah memiliki kumpulan nilai yang ada, buat objek "patch" dengan nama kolom yang ingin diperbarui dan nilai barunya, dan gunakan untuk memperbarui objek perusahaan dengan nilai baru. Inilah yang menyenangkan dari melakukan ini dengan Python -- Library klien mewakili perusahaan sebagai objek kamus, yang berarti metode sudah ada di dalamnya. Tidak perlu pengulangan yang berlebihan. Buat objek kamus tepat di bawah kode yang telah Anda tulis.

update_company.py

...  
    patch = {
       'displayName': "The New Bar",
       'websiteUri': "http://www.example.com"
    }
    newCompany.update(patch)
    print("Debug: New company info %s " % newCompany)
... 

Sekarang, satu-satunya yang perlu dilakukan adalah membuat objek permintaan (lihat Dokumentasi patch untuk detail tentang apa yang dapat dimuat di sana) dan menjalankan panggilan API.

... 
    request = {'company': newCompany}
 
    company_updated = client_service.projects().companies().patch(
        name=company_name, body=request).execute()
    print('Company updated: %s' % company_updated)
... 

Atau, jika hanya ingin menyediakan kolom yang benar-benar ingin diubah, Anda dapat menyertakan kolom bersama dengan mask pembaruan. Ini berguna dalam situasi saat Anda belum memiliki setelan objek perusahaan yang diperbarui, atau hanya memiliki satu kolom yang ingin diperbarui dan tidak ingin mengirim bolak-balik objek besar yang tidak perlu. Tapi bagaimana Anda MENGGUNAKAN mask update, Anda bertanya? Di mana kode yang menunjukkan cara baru dan menarik untuk memperbarui informasi perusahaan ini?

Anda membaca pikiran kami, pembaca! Cuplikan di bawah mengeksekusi update informasi perusahaan menggunakan mask update, sebagai pengganti pengganti entri yang lengkap.

update_company.py

... 
   # New set of fields, not the complete company object
   companyFields = {'displayName': 'The New Bar',
                    'websiteUri': 'http://shouldNotUpdate.com',
                    'externalId': 'bar_llc'}

   # Note that the mask only contains the display name, not the URL.
   # This is entirely for demonstration purposes.  This mask will tell the API
   # to update the display name, but NOT the website uri.
   mask = 'displayName'
   request = {'company': companyFields,
              'update_mask': mask}
   company_updated = client_service.projects().companies().patch(
       name=company_name,
       body=request).execute()
   print('Company updated!: %s' % company_updated)
... 

Perhatikan bahwa panggilan API adalah sama. Perbedaannya adalah objek permintaan sekarang memiliki dua kolom (company dan update_mask), bukan hanya satu (company). Masker update adalah daftar kolom yang dipisahkan koma. Jika kita ingin menyertakan kolom "websiteUri" di mask, maka nilai mask akan terlihat seperti ini:

   mask = 'displayName,websiteUri'

Apa pun rute yang Anda pilih, jalankan dari cloud shell, dan (dengan asumsi Anda telah memasukkan pernyataan cetak tersebut), Anda akan melihat output yang menunjukkan nilai lama dan baru untuk perusahaan Anda.

$ python update_company.py
Company existed: {u'externalId': u'bar_llc', u'displayName': u'The New Bar', u'name': u'projects/[PROJECT_ID]/companies/083495ad-acba-477f-a084-8be84f31692e', u'websiteUri': u'http://www.example.com'}
Company {u'externalId': u'bar_llc', u'displayName': u'The New Bar', u'name': u'projects/[PROJECT_ID]/companies/083495ad-acba-477f-a084-8be84f31692e', u'websiteUri': u'http://www.example.com'}
New company info {u'externalId': u'bar_llc', u'name': u'projects/[PROJECT_ID]/companies/083495ad-acba-477f-a084-8be84f31692e', u'displayName': 'The New Bar', u'websiteUri': 'http://www.example.com'}
Company updated: {u'externalId': u'bar_llc', u'displayName': u'The New Bar', u'name': u'projects/[PROJECT_ID]/companies/083495ad-acba-477f-a084-8be84f31692e', u'websiteUri': u'http://www.example.com'}
$

Tidak akan banyak yang mengarah ke solusi penelusuran lowongan tanpa lowongan yang perlu ditelusuri. Di bagian sebelumnya, kita telah membahas cara membuat perusahaan. Sekarang, mari kita bahas tentang cara membuat pekerjaan dan praktik terbaik untuk bekerja dengan mereka.

Perhatikan bahwa pekerjaan akan dilampirkan ke perusahaan. Jika belum memiliki perusahaan yang dibuat dengan API (atau jika Anda berhasil menjalankan panggilan "delete" di akhir bagian dan menghapus satu-satunya perusahaan Anda) kembali dan buat perusahaan lagi. Maka Anda akan siap untuk membuat pekerjaan!

Membuat tugas

Mari kita mulai dengan membuat pekerjaan!

Untuk membuat tugas, Anda memerlukan data berikut:

  • Nama perusahaan. Bukan string "Perusahaan mewah saya LLC" yang dapat dibaca manusia, tetapi string lebih panjang "projects/[PROJECT_ID]/company/COMPANY_ID".
  • ID permintaan untuk pekerjaan tersebut. Ini mirip dengan external_id untuk perusahaan - ini mewakili ID unik Anda sendiri untuk pekerjaan tersebut, untuk memudahkan sinkronisasi Cloud Talent Solution API dengan solusi pekerjaan Anda saat ini, mis.senior_llama_wrangler
  • Jabatan pekerjaan, yang merupakan nama tampilan pekerjaan, mis. "Senior Llama Wrangler."
  • Deskripsi pekerjaan. Perhatikan bahwa deskripsi dapat berisi HTML tersemat agar Anda dapat memformatnya dengan benar. Kontennya cukup jelas. "<p>Akan memimpin tim llama wranglers.</p><p> Harus memiliki kemampuan dan pengalaman kepemimpinan dengan llama."</p>
  • applicationInfo - Informasi lebih lanjut tentang cara mengajukan permohonan. Dapat berisi 1+ uri, 1+ alamat email, atau string berformat HTML dengan petunjuk lebih lanjut. Anda bahkan dapat menyertakan ketiganya . Namun, Anda harus memasukkan minimal 1.

Jadi, jika kami membuat pekerjaan untuk perusahaan kami, FooCorp, yang dibuat sebelumnya, seperti inilah tampilan kolomnya:

name

projects/[PROJECT_ID]/companies/0123-Big-Hex-String-AABB0

requisition_id

senior_llama_wrangler

title

Llama Wrangler Senior

description [deskripsi]

Llama Wrangler berpengalaman diperlukan untuk pekerjaan purnawaktu. Kemampuan kepemimpinan diperlukan, karena Anda akan membawa tim perawat llama dan melatih mereka hingga bangkai kereta api berskala penuh.<p/>Harus bekerja dengan baik dengan hewan dan kadang-kadang siap untuk berlari dengan sangat cepat, seperti sangat cepat. Benar-benar cepat. Ini adalah beberapa llama cepat.

application_info

Uri: http://www.example.com/llama_wrangler_application/

Email: llama-apply@example.com

Jika tidak memiliki nama perusahaan lagi, Anda dapat menggunakan kode "get_company" yang digunakan pada langkah 3 untuk mengambilnya.

Kode untuk membuat pekerjaan akan terlihat sangat mirip dengan kode untuk membuat perusahaan. Beberapa baris pertama seharusnya sudah tidak asing bagi Anda (impor blah blah blah, buat instance objek layanan klien). Lalu, Anda membuat objek dikte (hanya serangkaian key-value pair bertingkat) yang mewakili permintaan Anda, dan mengirimkannya bersama dengan panggilan API "create"

Tempel cuplikan berikut dalam file bernama create_job.py. Anda sebenarnya dapat memanggilnya apa saja, tetapi tutorial ini akan mengasumsikan nama file tersebut.

create_job.py

import os

from googleapiclient.discovery import build
from googleapiclient.errors import Error

client_service = build('jobs', 'v3')
project_id = 'projects/' + os.environ['GOOGLE_CLOUD_PROJECT']

new_job = {
   'company_name': 'projects/[PROJECT_ID]/companies/083495ad-acba-477f-a084-8be84f31692e',
   'title': 'Senior Llama Wrangler',
   'description':
   """Experienced Llama Wrangler required for full-time position.
   Leadership ability required, as you will be taking a team of llama
   caregivers and training them up to full-scale wranglers.
   <p/>Must work well with animals and occasionally be prepared to run
   really, like really really fast.  Like REALLY fast.
   These are quick llamas.""",
   'requisition_id': 'senior_llama_wrangler',
   'application_info': {
       'uris': ['http://www.example.com/llama-wrangler-application'],
       'emails': ['llama-apply@example.com']
   }
}

try:
   # Nest that Job object in a "job" object.  Now it's an API request!
   request = {'job': new_job}

   # The actual API call happens here.
   result = client_service.projects().jobs().create(
       parent=project_id, body=request).execute()
   print('Job created: %s' % result)

except Error as e:
   print('Got exception while creating job')
   raise e

Jalankan dari Cloud Shell dan Anda akan mendapatkan kembali blob JSON yang besar dengan tugas yang baru saja dibuat.

$ python create_job.py
Job created: {u'languageCode': u'en', u'description': u'Experienced Llama Wrangler required for full-time position. Leadership ability required, as you will be taking a team of llama caregivers and training them up to full-scale wranglers.Must work well with animals and occasionally be prepared to run really, like really really fast. Like REALLY fast. These are some quick llamas.', u'applicationInfo': {u'emails': [u'llama-apply@example.com'], u'uris': [u'http://www.example.com/llama-wrangler-application']}, u'companyName': u'projects/[PROJECT_ID]/companies/083495ad-acba-477f-a084-8be84f31692e', u'requisitionId': u'senior_llama_wrangler', u'title': u'Senior Llama Wrangler', u'postingExpireTime': u'2019-09-11T16:04:48.546Z', u'visibility': u'ACCOUNT_ONLY', u'postingCreateTime': u'2019-08-12T16:04:48.546Z', u'companyDisplayName': u'Masked Panda Inc', u'postingUpdateTime': u'2019-08-12T16:04:48.611Z', u'postingPublishTime': u'2019-08-12T16:04:48.611Z', u'name': u'projects/[PROJECT_ID]/jobs/12345}

Jika Anda mendapatkan kembali sesuatu seperti di atas, artinya Anda berhasil membuat pekerjaan.

Pekerjaan harus unik

Sebagai eksperimen, jalankan kembali skrip terakhir, dan mari kita lihat apa yang terjadi.

$ python create_job.py
Got exception while creating job
Traceback (most recent call last):
  File "create_job.py", line 37, in <module>
    raise e
googleapiclient.errors.HttpError: <HttpError 409 when requesting https://jobs.googleapis.com/v3/projects/[PROJECT_ID]/jobs?alt=json returned "Job projects/[PROJECT_ID]/jobs/103672929591403206 already exists. Request ID for tracking: ec94f4cb-70f1-48cf-bae6-b4dad056ac3f:APAb7ITRlgTTpVMONSSBCG4LnFzqR765Eg==. Related Job requisition ID: senior_llama_wrangler.">

Apa yang terjadi di sini? Anda mencoba memasukkan listingan pekerjaan duplikat. Pekerjaan yang masih berlaku harus unik di dalam sistem.

Keunikan ditentukan oleh kolom berikut:

  • Nama perusahaan - Wajib diisi ketika Anda membuat pekerjaan, tidak dapat diperbarui
  • ID Permintaan - Diperlukan saat Anda membuat pekerjaan, tidak dapat diperbarui
  • Code Bahasa - Opsional, default untuk en_us, dapat diperbarui

Jika pekerjaan yang Anda coba buat atau perbarui memiliki 3 kolom yang sama dengan pekerjaan yang ada dan belum berakhir, pekerjaan tersebut dianggap duplikat, dan itu membuat/memperbarui gagal, dengan pesan error yang Anda lihat di atas.

Hore!

Selamat, kini Anda memiliki perusahaan DAN listingan pekerjaan untuk perusahaan tersebut di sistem Anda. Dan Anda sudah menyelesaikan semua ini dalam waktu kurang dari satu jam. Tahukah Anda berapa lama waktu yang dibutuhkan untuk menampilkan situs listingan lowongan terbaik di internet kepada pembaca? Lebih dari satu jam. Misalnya cara lainnya. Minggu. Bulan. Rapat dewan. Mungkin ada spreadsheet dan pernyataan misi yang terlibat. Saya yakin mengenai hal tersebut di kantor. Apa kamu tahu? Sedikit kurang dari satu jam. Ayo lanjutkan!

Masih ada banyak hal lainnya. Mari kita lanjutkan.

Memperbarui Lowongan

Sama seperti perusahaan, kita bisa mendapatkan pekerjaan untuk melihat detailnya, dan menambal pekerjaan untuk memperbaruinya.

Berikut adalah detail cara Anda mendapatkan detail pekerjaan. Jika cuplikan di bawah terlihat tidak asing, itu karena kita mengambil metode "get_company" dari bagian sebelumnya dan mengganti "perusahaan" dengan "pekerjaan" dan ditambahkan dalam variabel job_name. Mari kita lihat info pekerjaannya terlebih dahulu.

update_job.py

import os

from googleapiclient.discovery import build
from googleapiclient.errors import Error

client_service = build('jobs', 'v3')
project_id = 'projects/' + os.environ['GOOGLE_CLOUD_PROJECT']

# The interesting bit
def get_job():
   try:
       job_existed = client_service.projects().jobs().get(
           name=job_name).execute()
       print('Job existed: %s' % job_existed)
       return job_existed
   except Error as e:
       print('Got exception while getting job')
       raise e

job_name = "projects/[PROJECT_ID]/jobs/12345"
job_info = get_job(job_name)

Untuk memperbarui pekerjaan, Anda memiliki opsi yang sama seperti sebelumnya saat memperbarui perusahaan: kirim objek lengkap dengan nilai yang diperbarui untuk menggantikan yang lama, atau kirimkan patch yang lebih kecil dengan mask kolom yang dipisahkan koma.

update_job.py (update dengan penggantian objek lengkap)

   # First the full-replacement method.  Update the complete job object with new field values.
   job_patch = {
       'title': "Rogue Llama Acquisition Engineer"
   }

   job_info.update(job_patch)
   request = {"job": job_info}

   job_updated = client_service.projects().jobs().patch(
       name=job_name, body=request).execute()
   print ("Updated job info : %s" % job_updated)

update_job.py (hanya dengan nilai kolom baru dan mask pembaruan)

   # Alternatively, if you know which fields have been updated, you can submit a patch with just the changes
   # and an update mask. This time let's just re-use the same job patch, and create an update mask.
   job_patch = {
       'title': "Rogue Llama Acquisition Engineer"
   }

   update_mask = "title"
   request = {"job": job_patch,
              "updateMask": update_mask
              }

   job_updated = client_service.projects().jobs().patch(
       name=job_name, body=request).execute()

   print ("Updated job info : %s" % job_updated)   

Dua cuplikan di atas melakukan hal yang sama: Keduanya memperbarui listingan pekerjaan tertentu dengan jabatan "Rogue Llama Acquisition Engineer". Perhatikan juga bahwa baris yang membuat panggilan API sama: Satu-satunya perbedaan adalah dalam objek permintaan. Satu memiliki objek pekerjaan lengkap yang akan menggantikan objek dengan nama pekerjaan tersebut. Cara lainnya hanya berupa kumpulan kolom yang akan diperbarui.

Manakah yang Anda pilih untuk dijalankan, output-nya akan sama. Coba saja.

$ python update_job
Updated job info : {u'languageCode': u'en', u'description': u'Experienced Llama Wrangler required for full-time position. Leadership ability required, as you will be taking a team of llama caregivers and training them up to full-scale wranglers.Must work well with animals and occasionally be prepared to run really, like really really fast. Like REALLY fast. These are some quick llamas.', u'applicationInfo': {u'emails': [u'llama-apply@example.com'], u'uris': [u'http://www.example.com/llama-wrangler-application']}, u'companyName': u'projects/[PROJECT_ID]/companies/083495ad-acba-477f-a084-8be84f31692e', u'derivedInfo': {u'jobCategories': [u'SCIENCE_AND_ENGINEERING']}, u'requisitionId': u'senior_llama_wrangler', u'title': u'Rogue Llama Acquisition Engineer', u'postingExpireTime': u'2019-09-11T16:04:48.546Z', u'visibility': u'ACCOUNT_ONLY', u'postingCreateTime': u'2019-08-12T16:04:48.546Z', u'companyDisplayName': u'Masked Panda Inc', u'postingUpdateTime': u'2019-08-12T19:28:41.850Z', u'postingPublishTime': u'2019-08-12T16:04:48.611Z', u'name': u'projects/[PROJECT_ID]/jobs/12345}

Hore! Anda telah menyelesaikan langkah 4.

Sekarang, lihat diri Anda. Menghapus semua ini seperti monster produktivitas. Sejauh ini, Anda dapat membuat perusahaan, menciptakan pekerjaan, dan memperbarui keduanya kapan saja. Tetapi Anda mungkin menyadari bahwa ada sesuatu yang tidak dapat diketahui dalam pelajaran ini. Satu operasi terakhir yang menempatkan D di C.R.U.D. Bagaimana jika kita ingin menghapusnya? Jangan khawatir, pembaca! Bagian selanjutnya membahas hal ini secara detail.

Mari kita mulai dengan perusahaan, untuk alasan yang masuk akal dari sekitar 5 menit dari sekarang.

Menghapus perusahaan

Menghapus perusahaan sangatlah mudah. Dengan menggunakan pernyataan impor yang sama seperti yang Anda buat saat membuat atau memperbarui perusahaan, cukup panggil metode delete, dengan meneruskan nama perusahaan saja (tidak perlu isi permintaan).

   # Yup, that's the whole thing.
   company_to_delete = "Insert company name here"
   result = client_service.projects().companies().delete(
       name=company_to_delete).execute()

Untuk membantu pembersihan saat Anda menjelajahi API ini, berikut adalah skrip python sederhana yang mengambil nama perusahaan sebagai parameter command line dan, Anda dapat menebaknya, akan menghapus perusahaan tersebut.

delete_company.py

from googleapiclient.discovery import build
from googleapiclient.errors import Error

client_service = build('jobs', 'v3')

# Name of the company to delete
company_to_delete = 'projects/[PROJECT_ID]/companies/123-abc-123'

try:
   # Yup, that's the whole thing.
   result_company = client_service.projects().companies().delete(
       name=company_to_delete).execute()

   print('Result of deleting company: %s' % result_company)

except Error as e:
   print('Got exception while deleting company')
   raise e

Sebut saja, dengan meneruskan nama perusahaan sebagai satu-satunya argumen command line.

$ python delete_company.py projects/[PROJECT_ID]/companies/083495ad-acba-477f-a084-8be84f31692e
Got exception while deleting company
Traceback (most recent call last):
  File "delete_company.py", line 29, in <module>
    raise e
googleapiclient.errors.HttpError: <HttpError 400 when requesting https://jobs.googleapis.com/v3/projects/[PROJECT_ID]/companies/083495ad-acba-477f-a084-8be84f31692e?alt=json returned "Company with name projects/[PROJECT_ID]/companies/083495ad-acba-477f-a084-8be84f31692e still has open jobs. Request ID for tracking: 6b9fe1a0-50ae-48b0-b33d-1622d547c363:APAb7ISnO4taWI4poffoX/EqzRCPSwpEbQ==">

Dan, selesai! Anda berhasil - tunggu sebentar. Apa itu? Error? "Masih memiliki pekerjaan yang terbuka"?

Ya. Sekarang Anda tahu aturan pertama dalam menghapus perusahaan: Aturan akan gagal selama perusahaan tersebut masih membuka lowongan. Bagaimana cara mengatasinya? Baiklah, kami harus memeriksa dan menghapus semua lowongan yang terkait dengan perusahaan tersebut.

Sekarang hal yang benar-benar masuk akal yang Anda pikirkan adalah "Saya akan menghapus pekerjaan yang baru saja saya buat, dan KEMUDIAN menghapus perusahaan yang menyertainya!" Masuk akal, pembaca! Mari kita lakukan.

delete_company.py

from googleapiclient.discovery import build
from googleapiclient.errors import Error

client_service = build('jobs', 'v3')

# Replace with your actual company and job names.
company_to_delete = 'projects/[PROJECT_ID]/companies/123-abc-123'
job_to_delete = 'projects/[PROJECT_ID]/jobs/12345'

try:
   result_job = client_service.projects().jobs().delete(
       name=job_to_delete).execute()

   result_company = client_service.projects().companies().delete(
       name=company_to_delete).execute()

   print('Result of deleting job: %s' % result_job)
   print('Result of deleting company: %s' % result_company)

except Error as e:
   print('Got exception while deleting company')
   raise e

Sekarang, coba jalankan lagi. Nilai yang ditampilkan dari panggilan API tersebut harus berupa entri "company" dan "job" saat ini, yang seharusnya kosong.

python delete_company.py
Result of deleting job: {}
Result of deleting company: {}

Ah. Bagus.

Satu hal lagi. Solusi di atas berfungsi dengan baik karena Anda, pembaca,

  • Sudah memiliki nama pekerjaan untuk semua lowongan yang ada bagi perusahaan ini.
  • Tidak membuat terlalu banyak "untuk menghapus pekerjaan secara manual" untuk perusahaan tersebut.

Mari kita berpura-pura tidak demikian

Ada panggilan API, jobs.list(), yang akan menampilkan tugas yang cocok dengan project ID dan perusahaan induk yang ditentukan. Berikut cara memanggil metode:

jobs_response = client_service.projects().jobs().list(
    parent=project_id,
    filter='companyName="' + company_name + '"').execute()
if jobs_response.get('jobs') is not None:
    for job in jobs_response.get('jobs'):
        print('- %s: %s' % (
              job.get('title'),
              job.get('name')))

Kini Anda dapat membuat dan mengelola listingan perusahaan dan lowongan menggunakan Google Cloud Talent Solutions Job Search API.

Yang telah kita bahas

  • Membuat dan mengelola perusahaan
  • Membuat dan mengelola listingan pekerjaan untuk perusahaan tersebut
  • Menyiapkan akun layanan untuk berinteraksi dengan API atas nama Anda

Pelajari Lebih Lanjut