Google Cloud ile İş Arama API'sı

Bu codelab'de, Cloud Talent Solution API'yi (CTS) kullanarak kuruluşunuzda iş arama ve yetenek işe alımını nasıl iyileştirebileceğinizi öğreneceksiniz. CTS'i kullanarak iş arama deneyiminize makine öğreniminin gücünü ekleyebilirsiniz.

Neler öğreneceksiniz?

  • Google Cloud projenizde CTS'i etkinleştirin
  • Bu şirketlerde tüzel kişiler ve iş fırsatları oluşturun

Gerekenler

  • Önceden oluşturulmuş bir Google Cloud projesi varsa (Halihazırda oluşturmadıysanız bir proje oluşturun).
  • Yaklaşık bir saat

Bu eğitimi nasıl kullanacaksınız?

Sadece okuyun Okuyun ve egzersizleri tamamlayın

Google Cloud Platform'la geçmiş deneyiminizi nasıl değerlendirirsiniz?

Acemi Orta Uzman

Bu eğitim, Google Cloud Platform'da tamamen çalışacak şekilde tasarlanmıştır. İş istasyonunuza indirme yapılması gerekmez.

Cloud Talent Solutions API'yi etkinleştir

Uygulamanızı Cloud Console'da açın ve sol üstteki hamburger menüsünü tıklayın. Yetkili Çözüm -> Genel Bakış menülerine göz atın.

Bu yeni bir proje olduğundan, API'yi etkinleştirmenizi isteyen yeni bir ekrana yönlendirileceksiniz. Etkinleştir'i tıklayın ve API'nin bu projede etkinleştirilmesi için birkaç dakika bekleyin.

Veri günlük kaydını etkinleştirme

Şimdi genel bakış sayfasına geri dönün. Veri günlük kaydını etkinleştirmenizi isteyen yeni bir iletişim kutusu görüntülenir (açılmamışsa, iletişim kutusuna daha önce geri dönün). Bunun için Job Search API'nin veriye ihtiyaç duyan bir makine öğrenimi modeli tarafından desteklendiğini bilmelisiniz. Entegrasyonun bir parçası olarak, bu modelleri daha fazla eğitmek için arama yapan kullanıcıların etkinliklerini gönderebilirsiniz. Kod üzerinden uygulandığında, hangi bilgilerin gönderileceğini belirleyebilirsiniz.

Bu etkinliklerin ne olduğunu ve daha sonra nasıl gönderileceğini daha ayrıntılı olarak ele alacağız. Ancak önceden eğitilmiş modeller düzgün bir şekilde çalışacaktır. Devam edip veri günlük kaydını etkinleştirin, ardından bu iletişim kutusunun sol gezinme bölmesinde "Hizmet hesabı bağlantıları"nı tıklayın.

Hizmet Hesabı ayarlama

API isteğinde bulunurken gerçek bir kimliği doğrulanmış hesap adına istekte bulunmanız gerekir. Google Cloud Platform'un en iyi uygulamaları, bunun için bir hizmet hesabı oluşturmanızı önerir. Hizmet hesaplarını, sınırlı izinlere sahip olan, kimliği doğrulanmış kullanıcıları ayarlamanın kolay bir yolu olarak düşünebilirsiniz. Bu, bağımsız ve güvenli bir sistem oluşturmanıza yardımcı olur.

Örneğin, Job Search API'yi kullanmak için bir hizmet hesabına ihtiyacımız olacaktır. Sol gezinme bölmesindeki "Cloud Talent Solution" bölümünde "Job Editor"u kullanarak okuma/yazma izinleri oluşturalım. Yalnızca "İş Görüntüleyici" ile bir hizmet hesabı oluşturulabilir, böylece bu hesap salt okunur erişime sahip olur.

Sonraki adımda, kullanıcılara bu hizmet hesabına erişim izni vermek isteyip istemediğiniz sorulur. Bu adımı atlayabilirsiniz. Ancak alt kısımda "Anahtar Oluştur"u tıkladığınızdan emin olun. Anahtar türü için "JSON"u, ardından "Oluştur"u seçin. Yeni bir JSON kimlik bilgisi dosyası otomatik olarak indirilir. Bu dosyayı sunucunuzda depolayın. Daha sonraki bir bölümde yazdığınız kod, kimlik doğrulaması için bu dosyayı kullanacaktır.

Ortam değişkenlerini ayarlama

Size kolaylık olması için Google Cloud kabuğunu kullanacağız. Bunu kendi geliştirme ortamınızdan yapmak istiyorsanız harika! Google Cloud SDK'yı ve istemci kitaplıklarını seçtiğiniz dilde yüklediğinizden emin olun (bu codelab'de Python kullanılacaktır). Cloud shell'de zaten bulut istemci kitaplıkları yüklü olacaktır. Faydalı, değil mi?

Kitaplıkları kullanarak kod çalıştırmak için iki ortam değişkeninin ayarlanmış olduğundan emin olmanız gerekir: Biri porject kimliğinizi, diğeri ise hizmet hesabınızın anahtar dosyasını belirtir. Bunu ayarlayalım.

Bir bulut kabuğu açmak için projenizde, web konsolunuzun sağ üst kısmındaki &&tt;_&quot simgesini tıklayın. Proje kimliğinizi belirtmek ve json anahtar dosyanızın yolunu belirtmek için aşağıdaki ortam değişkenlerini ekleyin:

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

Değişkenlerin ayarlandığını doğrulamak için "echo" kullanın.

echo $GOOGLE_CLOUD_PROJECT
echo $GOOGLE_APPLICATION_CREDENTIALS

Cloud Shell'de kod düzenleyiciyi açma

Google Cloud Console'dan, sağ üstteki bulut kabuğu simgesini kullanarak Cloud Shell'i açın.

Bulut kabuğunun sağ üst tarafında bir dizi simge olacak. Aşağıda gösterildiği gibi, File -> Launch Code Editor'ı (Kod Düzenleyiciyi Başlat) tıklayın:

Şirket oluşturma

Yeni bir kaynak dosyası oluşturmak için aşağıdaki Dosya -> Yeni Dosya seçeneğini kullanın ve bu içeriği aşağıdaki içerikle doldurun. create_company.py adını verin.

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

Bu kod ne işe yarıyor? Haydi keşfedelim. Burada, alakalı iki kitaplık kitaplığı çağrısı vardır:

  • client_service = build('jobs', 'v3'), Google API python istemci kitaplığını kullanarak bir hizmet nesnesi oluşturur.
  • client_service.projects().companies().create(parent=project_id, body=request).execute(), şirketi oluşturmak için API çağrısını yapar. Bu çağrıya verilen yanıt, şirket bilgilerini içeren bir nesnedir. Hem istek nesnesinin hem de yanıt nesnesinin içeriği, oluşturma yöntemi dokümanlarında verilmiştir.

Dosyayı, komut düzenleyici penceresinden (kod düzenleyici penceresinin hemen altına doğrudan yardımcı olacak şekilde) çalıştırın. Aşağıdaki çıkışa benzer bir şey göreceksiniz.

> 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, Job Search API tarafından oluşturulan benzersiz tanımlayıcıdır. external_id ise kendi iş sisteminizden sağladığınız tanımlayıcıdır. API aracılığıyla bir nesneye her başvurduğunuzda name değerini kullanmanız gerekir.

Şirketi Güncelle

Sistemde zaten bir şirket varlığınız varsa ve bazı alanlar eklemek veya mevcut alanları değiştirmek istiyorsanız süreç aşağıdaki adımlara ayrılır:

  • Şirket için mevcut alan değerlerini içeren bir Nesne oluşturun
  • Yeni veya güncellenmiş alanlarla nesneyi güncelleyin. API'nin hangi şirketi güncelleyeceğini bilmesi için şirket adı adını kullanın.
  • Yeni nesneyi"patch" yönteminikullanarak gönderin.

Bu işlem, gerçekte güncellendiğinden bağımsız olarak tüm şirket değerlerinin üzerine yazmanızı sağladığından, tüm mevcut değerlere sahip olmanız gerektiğini unutmayın. Yani şirket bilgilerini güncellemeden önce bu bilgileri almamız gerekir.

Çalışma alanınızda yeni bir dosya (update_company.py) oluşturun. Devre dışıysa aşağıda gösterilen get_company yöntemini ekleyerek başlayın.

güncelleme_sirketi.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()

Bu noktada API çağrınızın şirket oluşturmaya benzer şekilde göründüğünü unutmayın. İstemci kitaplığı REST arayüzüyle eşleşecek şekilde oluşturulur. Bu nedenle, şirketlerde gerçekleştirdiği CRUD işlemlerinin tümü client_service.projects().companies().theMethod(argName=argValue).execute(). biçiminde olur

Mevcut değerleri aldığımıza göre, güncellenmesini istediğiniz alan adlarını ve bunların yeni değerlerini içeren bir "yama" nesnesi oluşturun ve bunu kullanarak şirket nesnenizi yeni değerlerle güncelleyin. Bunu Python'da eğlenceli yapan şeyler: -- İstemci kitaplığı şirketi sözlük nesnesi olarak gösterir. Bu, yöntemin zaten yerleşik olduğu anlamına gelir. Fazla döngüye gerek yok. Daha önce yazdığınız kodun hemen altında bir sözlük nesnesi oluşturun.

güncelleme_sirketi.py

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

Artık yapılacak tek şey bir istek nesnesi oluşturmak (burada ne olabileceği hakkında ayrıntılar için yandaki belgeyi incelemek) ve API çağrısını gerçekleştirmektir.

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

Alternatif olarak, yalnızca gerçekten değiştirmek istediğiniz alanları sağlamak isterseniz alanları bir güncelleme maskesiyle birlikte ekleyebilirsiniz. Bu, halihazırda güncellenmiş bir şirket nesne ayarınızın olmadığı veya yalnızca güncellemek istediğiniz bir alanın olmadığı ve gereksiz büyüklüklerde nesne göndermek istemediğiniz durumlarda yararlıdır. Ancak, güncelleme maskesini nasıl kullanmalısınız? Şirket bilgilerini güncellemenin bu heyecan verici ve yeni yolunu gösteren kod nerede?

Fikirlerinizi okuyorsun okuyucu! Aşağıdaki snippet, girişin tamamen değiştirilmesi yerine güncelleme maskesi kullanarak şirket bilgileri güncellemesini gerçekleştirir.

güncelleme_sirketi.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)
... 

API çağrısının aynı olduğunu unutmayın. Aradaki fark, istek nesnesinin artık tek bir alan adı (şirket) yerine iki alan (şirket ve update_mask) olmasıdır. Güncelleme maskesi, alanların virgülle ayrılmış listesidir. Maskeye "websiteUri" alanını eklemek istediğimizde maske değeri şu şekilde görünür:

   mask = 'displayName,websiteUri'

Hangi yöntemi seçerseniz seçin, bulut kabuğundan çalıştırın ve bu yazdırma ifadelerini bıraktığınızı varsayarak, şirketinizin eski ve yeni değerlerini belirten bir çıktı görürsünüz.

$ 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'}
$

Aranacak iş içermeyen bir iş arama çözümü çok değerli olamaz. Son bölümde, şirket oluşturma hakkında konuştuk. Şimdi işlerin nasıl oluşturulacağı ve onlarla çalışmak için en iyi uygulamalar hakkında konuşalım.

İşlerin şirketlere ekleneceğini unutmayın. Henüz API ile oluşturduğunuz bir şirketiniz yoksa (veya bölümün sonunda "sil" aramasını başarıyla çalıştırdıysanız ve tek şirketinizi kaldırdıysanız) geri dönüp tekrar bir şirket oluşturabilirsiniz. İş üretmeye hazırsınız.

İş oluşturma

Bir iş oluşturarak başlayalım.

Bir iş oluşturmak için aşağıdaki verilere ihtiyacınız vardır:

  • Şirketin adı. İnsanlar tarafından okunabilen "faaliyet şirketim" LLC dizesi değil, bu kadar uzun süreli bir "proje"/[PROJE_KİMLİĞİ]/şirketler/ŞİRKET_KİMLİĞİ" dizesi.
  • İş için istek kimliği. Bu, bir şirket için external_id değerine benzer: İş için kendi benzersiz tanımlayıcınızı temsil eder. Bu sayede, Cloud Talent Solution API'yi mevcut iş çözümünüzle senkronize edebilirsiniz (ör. age_llama_wrangler)
  • İşin görünen adı olan başlık (ör. "Kıdemli Llama Wrangler").
  • İşin açıklaması. Açıklamanın doğru şekilde biçimlendirebilmeniz için yerleştirilmiş HTML içerebileceğini unutmayın. İçerik yeterince açıklayıcıdır. &&t;plt
  • applicationInfo - Başvuruda bulunma hakkında daha fazla bilgi edinin. 1'den fazla uri, 1'den fazla e-posta adresi veya ek talimatlar içeren HTML biçiminde bir dize olabilir. Hatta 3! Ancak en az 1 tane eklemeniz gerekir.

Daha önce, önceden oluşturulmuş şirketi FooCorp için bir iş oluşturur olsaydık alanlar aşağıdaki gibi görünebilirdi:

name

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

requisition_id

yaşlı_adı_wrangler

title

Kıdemli Llama Wrangler

description

Tam zamanlı bir pozisyon için deneyimli Llama Wrangler gereklidir. Liderlik becerileri gerekir. Çünkü lama yapan bakım ekiplerinden oluşan bir ekibi alıp tam ölçekli işkencecilere eğiteceksiniz.<p/>Hayvanlarla uyumlu olmalı ve gerçekten çok hızlı koştuğunuz gibi gerçekten koşuya hazır olmalısınız. Gerçekten hızlı. Bunlar hızlı lamalar.

application_info

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

E-postalar: llama-apply@example.com

Artık şirket adınız yoksa, şirket adını almak için 3. adımda kullandığınız "get_company&quot" kodunu kullanabilirsiniz.

İş oluşturma kodu, şirket oluşturma koduna çok benzer. İlk birkaç satır size zaten tanıdık gelmelidir (içeri balan blah balan, istemci hizmet nesnesini örneklendir). Ardından, isteğinizi temsil eden bir dikte nesnesi (iç içe yerleştirilmiş anahtar/değer çiftleri grubu) oluşturur ve "&create" API çağrısıyla birlikte gönderirsiniz.

Aşağıdaki snippet'i create_job.py adlı bir dosyaya yapıştırın. Dosyaya istediğiniz gibi ad verebilirsiniz, ancak bu eğitimde dosya adının olduğu varsayılır.

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

Bunu bulut kabuğundan yapın. Kısa süre önce oluşturduğunuz işe ait büyük bir JSON blokunu geri alırsınız.

$ 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}

Yukarıdakilere benzer bir durumla karşılaşırsanız başarıyla iş oluşturmuşsunuz demektir.

İşler benzersiz olmalıdır

Bir deneme olarak, son komut dosyasını tekrar çalıştırın ve neler olduğunu görelim.

$ 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.">

Burada ne oldu? Yinelenen iş girişi girmeye çalıştınız. Süresi dolmamış işlerin sistemde benzersiz olması gerekir.

Benzersizlik, aşağıdaki alanlara göre belirlenir:

  • Şirket adı - İş oluştururken gereklidir, güncellenemez
  • Talep Kimliği: İş oluştururken gereklidir, güncellenemez
  • Dil Kodu: İsteğe bağlı, varsayılan olarak en_us, güncellenebilir

Oluşturma veya güncellemeye çalıştığınız işlerde, bu 3 alanın tümü mevcut ve süresi dolmamış bir işle ortaksa bu iş, yinelenen bir iş olarak kabul edilir ve yukarıda gördüğünüz hata mesajıyla birlikte başarısız oluşturulur veya güncellenir.

Mükemmel!

Tebrikler, sisteminizde hem bir şirket hem de bir iş girişi mevcut. Tüm bunları bir saatten kısa bir süre içinde tamamladınız. İnternette en iyi iş ilanı sitelerinin bu noktaya gelmesinin ne kadar sürdüğünü biliyor musunuz? Bir saatten çok daha uzun bir süre. Mesela yolu daha fazlası. Haftalar. Ay. Toplantılar düzenleme. Muhtemelen e-tablolar ve misyon ifadeleri yer alıyordu. Ofislerde bu işin epey ilerlediğinden eminim. Yolculuğun ne olduğunu biliyor musun? Bir saatten biraz daha kısa. Helal olsun sana!

Dahası var! Bu istikrarı sürdüreceğiz.

İş Güncelleme

Şirketlerde olduğu gibi, işin ayrıntılarını görmek için iş alabilir ve işi güncellemek için yama uygulayabiliriz.

İş ayrıntılarını nasıl alacağınızı öğrenin. Aşağıdaki snippet tanıdık görünüyorsa önceki bölümden "get_company&quot" yöntemini alıp "job&quot" yerine "job_name" ifadesini ekleyip Önce iş bilgilerini edinelim.

güncelleme_işi.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)

İşi gerçekten güncellemek için şirketi güncellerken kullandığınız seçeneklerle aynı seçeneklere sahip olursunuz: Eskisini değiştirmek için güncellenmiş değerleri içeren eksiksiz bir nesne gönderin veya virgülle ayrılmış alan maskesi içeren daha küçük bir yama gönderin.

update_job.py (tam nesne değişimiyle güncelleme)

   # 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 (yalnızca yeni alan değerleri ve güncelleme maskesi ile)

   # 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)   

Yukarıdaki iki snippet tam olarak aynı şeyi yapar: İş ilanlarını "Rogue Llama Acquisition Engineer" ile güncellerler. Ayrıca, API çağrısında bulunan satırın aynı olduğunu unutmayın: Aradaki tek fark istek nesnesindedir. Birinde, o iş adının yerini alacak tam bir iş nesnesi var. Diğeri ise güncellenen bir dizi alandır.

Hangisini çalıştırmayı seçerseniz seçin sonuç aynı olacaktır. Denemeye ne dersiniz?

$ 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}

Harika! 4. adımı tamamladınız.

Şimdi kendine bak. Bunların tümünü bir tür canavar canavarı gibi bulursunuz. Şu ana kadar tek bir bakışta şirketler oluşturabilir, iş oluşturabilir ve her ikisini de güncelleyebilirsiniz! Ama bu derslerde merak ettiğiniz bir şey olmadığını fark etmiş olabilirsiniz. D'yi C.R.U.D'ya yerleştiren son işlem. Bunları silmek istiyorsak ne yapalım? Merak etmeyin okuyucu! Sonraki bölümde, bu konuyu ayrıntılı olarak ele alıyoruz.

Bugünden itibaren 5 dakika içinde anlatıma mantıklı gelecek şirketlerle başlayalım.

Şirket silme

Şirket silmek çok kolaydır. Bir şirket oluştururken veya güncellerken kullandığınız içe aktarma ifadelerini kullanarak sadece şirketin adını girerek delete yöntemini çağırabilirsiniz (istek gövdesi gerekmez).

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

Bu API'yi keşfederken temizlik yapmanıza yardımcı olmak için bir şirket adını komut satırı parametresi olarak alan ve tahmin ettiğiniz gibi şirketi silen basit bir python komut dosyası.

sil_sirket.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

Tek komut satırı bağımsız değişkeni olarak şirket adını ileterek adı verin.

$ 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==">

İşte bu kadar! Başardınız, lütfen bekleyin. O nedir? Hata mı yaptınız? "Hala açık iş var mı?"

Evet. Artık şirketleri silmenin ilk kuralını biliyorsunuz: Bu şirketin hâlâ açık işleri olduğu sürece başarısız olur. Bu konuda ne yapıyoruz? Bu şirketle ilişkili tüm açık işleri baştan sona silmemiz gerekiyor.

Son derece makul olan, az önce oluşturduğum işi sileceğim ve ardından birlikte çalıştığım şirketi silecek. Bu çok mantıklı, okuyucu! Haydi başlayalım.

sil_sirket.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

Şimdi çalıştırmayı tekrar deneyin. Bu API çağrılarından döndürülen değerler, mevcut "şirket" ve "iş" girişleri olmalıdır.

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

Hay aksi. Bravo.

Bir önemli nokta daha var. Yukarıda bahsedilen çözüm çok başarılı oldu. Çünkü okuyucu olarak,

  • Bu şirketin mevcut tüm işleri için halihazırda iş adı vardı.
  • Şirketin o işi için manuel olarak silinemeyecek kadar fazla yol yoktu.

Ayrılmamış gibi davranalım

Belirtilen proje kimliği ve ana şirketle eşleşen işleri döndürecek bir API çağrısı (jobs.list()) vardır. Yöntem şu şekilde adlandırılır:

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')))

Artık Google Cloud Talent Solutions Job Search API'yi kullanarak şirket ve iş ilanları oluşturup yönetebilirsiniz.

Ele aldığımız konular

  • Şirket oluşturma ve yönetme
  • Bu şirketler için iş ilanları oluşturma ve yönetme
  • Sizin adınıza API ile etkileşim kurmak için hizmet hesaplarını ayarlama

Daha Fazla Bilgi