Nozioni di base sul job (v3)

Una risorsa di lavoro rappresenta un'offerta di lavoro (chiamata anche "offerta di lavoro" o "requisito di lavoro"). Un lavoro appartiene a una società che è l'entità che assume responsabile del lavoro.

Un job può essere manipolato utilizzando i metodi di creazione, aggiornamento ed eliminazione, a cui si accede utilizzando i metodi list e get. Potrebbero essere necessari fino a 5 minuti indice di Cloud Talent Solution per riflettere i cambiamenti.

I job sono contenuti nell'ambito di un account di servizio. Solo rete di ricerca richieste autenticate utilizzando le credenziali di un particolare servizio può essere utilizzato per accedere ai contenuti di questi job.

Per una risoluzione dei problemi e una valutazione semplificate, sincronizza l'indice dei job di Cloud Talent Solution con il tuo indice di job e mantieni una relazione tra i valori name generati Cloud Talent Solution, nonché l'identificatore univoco del job nel tuo sistema. Come offerte di lavoro modifiche o sono state introdotte nel sistema, la chiamata CRUD appropriata deve essere inviati a Cloud Talent Solution in tempo reale per garantire che le modifiche vengano applicate immediatamente. L'indice di Cloud Talent Solution deve essere aggiunto al job esistente di importazione dati.

Crea un job

Per creare un lavoro, consulta la Guida rapida alla creazione di aziende e offerte di lavoro per maggiori dettagli.

Java

Per saperne di più sull'installazione e sulla creazione di un client Cloud Talent Solution, consulta Librerie client di 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

Per saperne di più sull'installazione e sulla creazione di un client Cloud Talent Solution, consulta Librerie client di 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

Per saperne di più sull'installazione e sulla creazione di un client Cloud Talent Solution, consulta Librerie client di 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
}

Campi obbligatori

I seguenti campi sono obbligatori durante la creazione e l'aggiornamento del job:

  • companyName: il nome della risorsa dell'azienda che elenca il lavoro, ad esempio projects/[PROJECT_ID]/companies/[COMPANY_ID].

  • requisitionId: l'ID richiesta, chiamato anche ID pubblicazione, assegnati dal client per identificare un job. Questo campo è destinato a essere utilizzato dal cliente per l'identificazione del cliente e il monitoraggio delle richieste. Il valore massimo di caratteri consentiti è 225.

    L'unicità di un'offerta di lavoro viene determinata utilizzando una combinazione requisitionID, companyName e le impostazioni internazionali del lavoro. Se un job viene creata con una chiave specifica di questi attributi, questa chiave viene archiviata Impossibile creare l'indice di Cloud Talent Solution e non è possibile creare altri job con questi stessi campi fino all'eliminazione del job.

  • title: il titolo del lavoro, ad esempio "Ingegnere informatico". Il valore massimo di caratteri consentiti è 500.

    Per risolvere il problema della mancanza di risultati di ricerca a causa di qualifiche non standard, Cloud Talent Solution sfrutta tutti i campi forniti nel job per comprendere il contesto del job e archiviare internamente una "pulire" qualifica del lavoro. Quando viene inviata una richiesta di ricerca al servizio, query di ricerca viene ripulita e le ontologie vengono utilizzate per mappare una query più pulita ai job puliti pertinenti.

  • description: la descrizione del lavoro, che in genere include una descrizione in più paragrafi dell'azienda e informazioni correlate. Separa vengono forniti nell'oggetto job per responsabilità, qualifiche e altre caratteristiche lavorative. Si consiglia di utilizzare questi campi job separati.

    Questo campo accetta e sanitizza l'input HTML e accetta grassetto, corsivo tag di markup per elenco ordinato ed elenco non ordinato. Il numero massimo di caratteri consentiti è 100.000.

Il valore sarà uno dei seguenti:

  • applicationInfo.uris[]: l'URL o gli URL delle pagine dell'applicazione.

  • applicationInfo.emails[]: indirizzi email a cui il curriculum o le domande di partecipazione al programma vengono utilizzati deve essere inviato.

  • applicationInfo.instruction: istruzioni per la richiesta, ad esempio "Invia per posta per ...". Questo campo accetta e pulisce l'input HTML, e accetta tag di markup in grassetto, corsivo, elenco ordinato ed elenco non ordinato. La il numero massimo di caratteri consentiti è 3000.

Campi comunemente utilizzati

  • postingExpireTime: l'ora, in base al timestamp, alla scadenza dell'offerta di lavoro. Una volta trascorso questo periodo di tempo, il lavoro viene contrassegnato come scaduto e non verrà visualizzato in risultati di ricerca. Questa data deve essere precedente al 31/12/2100 nel fuso orario UTC. Le date non valide (ad es. le date passate) vengono ignorate. La data predefinita quando il job scade 30 giorni dopo l'ora di creazione del job nel fuso orario UTC.

    I contenuti delle offerte di lavoro scadute possono ancora essere recuperati fino a 60 giorni dopo il job è scaduto utilizzando l'operatore GET. Dopo questo termine di 60 giorni, il job non verrà restituito tramite un'operazione GET.

  • addresses[]: località in cui il lavoro assume. Indicare l'indirizzo completo è consigliato l'indirizzo o gli indirizzi della sede di assunzione per consentire una migliore API tra cui le ricerche di offerte di lavoro per tempo del tragitto giornaliero. Il numero massimo consentito 500 caratteri. Ulteriori informazioni su addresses[] sono disponibili in Best practice di seguito.

  • promotionValue: un valore maggiore di 0 definisce questo job come "job in primo piano" che viene restituito solo nelle ricerche di lavoro di tipo FEATURED_JOBS. Superiore vengono restituiti più in alto nei risultati di ricerca in primo piano. Consulta Job in primo piano per ulteriori informazioni.

Campi personalizzati

  • customAttributes: questo campo memorizza fino a 100 attributi personalizzati utilizzati per archiviare dati personalizzati sul job. Questi campi possono essere filtrati usando una richiesta di ricerca che specifica il campo jobQuery di una richiesta di ricerca di lavoro. Inoltre, uno qualsiasi di questi campi può essere impostato nel keywordSearchableJobCustomAttributes dell'azienda. Un termine di ricerca che ha una corrispondenza esatta in uno qualsiasi i campi in keywordSearchableJobCustomAttributes restituiscono tutti i job che includono la corrispondenza.

Aggiorna un job

Aggiorna il job senza fieldMask

Java

Per saperne di più sull'installazione e sulla creazione di un client Cloud Talent Solution, consulta Librerie client di 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

Per saperne di più sull'installazione e sulla creazione di un client Cloud Talent Solution, consulta Librerie client di 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

Per saperne di più sull'installazione e sulla creazione di un client Cloud Talent Solution, consulta Librerie client di 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
}

Aggiorna job con fieldMask

Java

Per saperne di più sull'installazione e sulla creazione di un client Cloud Talent Solution, consulta Librerie client di 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

Per saperne di più sull'installazione e sulla creazione di un client Cloud Talent Solution, consulta Librerie client di 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

Per saperne di più sull'installazione e sulla creazione di un client Cloud Talent Solution, consulta Librerie client di 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
}

Best practice

Campi relativi alla località

Se possibile, ti consigliamo di fornire l'indirizzo stradale di un lavoro nel campo addresses[]. Ciò favorisce il rilevamento della posizione e la pertinenza. Quando indirizzo a livello stradale non è disponibile. Inserisci quante più informazioni possibile. Gli indirizzi sono supportati a livello di paese. Le designazioni delle regioni (ad esempio "Pacifico nord-occidentale") non sono supportate.

Cloud Talent Solution utilizza i dati nel campo addresses[] per compilare nel campo (solo output) derivedInfo.locations[]. Quando non viene fornito un indirizzo completo, utilizza altri indicatori, come il nome dell'azienda, per determinare se è possibile dedurre un indirizzo più completo per l'offerta di lavoro.

Ad esempio, se la posizione di un job software è specificata come Mountain View, e l'azienda a cui è associato il job è Google, il servizio cerca l'oggetto dell'azienda per vedere se un indirizzo migliore è specificato nel campo headquartersAddress e se l'indirizzo si trova nella stessa città come offerta di lavoro. In tal caso, il servizio comprende che il job è "probabile" a quell'indirizzo e compila il campo derivedInfo.locations[] in modo appropriato.

Se i dati dell'indirizzo dell'azienda non sono disponibili, il servizio utilizza una combinazione di conoscenze proprietarie e informazioni sul lavoro/sull'azienda per informare il derivedInfo.locations[] .

Poiché il valore derivedInfo.locations[] è una previsione, ti consigliamo di utilizzare i dati derivedInfo.locations[] o il campo addresses, quando viene visualizzato l'indirizzo del lavoro.

A un'offerta di lavoro non possono essere associate più di 50 località. Se un job ha più sedi, puoi suddividere il lavoro in più job, ognuno con un requisitionId (ad es. 'ReqA' , 'ReqA-1', 'ReqA-2' e così via) poiché si dispone di più i job con gli stessi valori requisitionId, , companyName e languageCode non sono consentito. Se l'elemento requisitionId originale deve essere conservato, un elemento CustomAttribute per l'archiviazione. Ti consigliamo di raggruppare le località più vicine a nello stesso lavoro per una migliore esperienza di ricerca.

Indirizzi supportati

Qualsiasi indirizzo riconosciuto dall'API Geocoding di Google Maps (nel formattedAddress) è accettata da Cloud Talent Solution. Il servizio restituisce un errore 400 se tenti di creare un job o di eseguire una ricerca utilizzando un indirizzo non riconosciuto.

Se l'indirizzo di un'attività è elencato in modo errato nell'API Geocoding di Google Maps, segnalare un bug per richiederne la correzione. L'applicazione delle correzioni può richiedere fino a 5 giorni.

Completamento automatico degli indirizzi

Cloud Talent Solution non fornisce suggerimenti di completamento automatico per le località. Utilizza l'API Google Maps Places o altri servizi di geolocalizzazione simili per compilare suggerimenti di completamento automatico.

Offerte di lavoro a livello statale, nazionale e telelavoro

I lavori possono essere specificati a livello di stato, nazionale o telelavoro utilizzando Campo postingRegion del job risorsa.

  • Vengono restituiti ADMINISTRATIVE_AREA e NATION job per qualsiasi ricerca la cui località esiste nello stato/paese dell'offerta di lavoro. Ad esempio, se un L'offerta di lavoro ADMINISTRATIVE_AREA ha una località in "WA, USA" viene restituito per le ricerche il cui LocationFilter specifica "Seattle".

  • In qualsiasi ricerca correlata alla località vengono restituite TELECOMMUTE offerte di lavoro, ma vengono considerati meno rilevanti. Per effettuare una ricerca, è possibile impostarli come target telecommutePreference flag a TELECOMMUTE_ALLOWED nella ricerca LocationFilter