Grundlegendes zu Jobs (v3)

Eine Jobressource stellt eine Stellenausschreibung (auch "Jobanzeige" oder "Jobanforderung" genannt) dar. Ein Job gehört zu einem Unternehmen, das als einstellende Entität für den Job verantwortlich ist.

Sie können Jobs mit den Methoden "create", "update" und "delete" bearbeiten und über die Methoden "list" und "get" aufrufen. Es kann bis zu fünf Minuten dauern, bis Änderungen im Cloud Talent Solution-Index widergespiegelt werden.

Jobs sind im Bereich eines Dienstkontos enthalten. Der Zugriff auf den Inhalt dieser Jobs ist nur über Suchanfragen möglich, die mithilfe der Anmeldedaten eines bestimmten Dienstkontos authentifiziert wurden.

Synchronisieren Sie zur einfachen Fehlerbehebung und Prüfung den Cloud Talent Solution-Jobindex mit Ihrem eigenen Jobindex und pflegen Sie eine Beziehung zwischen dem von Cloud Talent Solution generierten name und der eindeutigen Job-ID in Ihrem System. Wenn sich Jobs ändern oder in Ihr System aufgenommen werden, sollte der entsprechende CRUD-Aufruf in Echtzeit an Cloud Talent Solution gesendet werden. Damit gewährleisten Sie die sofortige Übernahme dieser Änderungen. Der Cloud Talent Solution-Index muss der vorhandenen Jobaufnahme-Pipeline hinzugefügt werden.

Job erstellen

Weitere Informationen zum Erstellen eines Jobs finden Sie in der Anleitung Schnellstart: Unternehmen und Jobs erstellen.

Java

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.


/** 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

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.

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

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.


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

Pflichtfelder

Folgende Felder müssen beim Erstellen und Aktualisieren von Jobs angegeben werden:

  • companyName: Der Ressourcenname des Unternehmens, in dem der Job aufgeführt ist, z. B. projects/[PROJECT_ID]/companies/[COMPANY_ID].

  • requisitionId: Die Anforderungs-ID (auch Posting-ID genannt), die vom Kunden zugewiesen wurde, um einen Job zu identifizieren. Dieses Feld ist für Clients zur Identifikation und für die Nachverfolgung von Anforderungen vorgesehen. Es sind maximal 225 Zeichen zulässig.

    Die Eindeutigkeit einer Stellenanzeige wird anhand einer Kombination aus requisitionID, companyName und dem Gebietsschema des Jobs ermittelt. Wenn Sie einen Job mit einem bestimmten Schlüssel dieser Attribute erstellen, wird dieser Schlüssel im Cloud Talent Solution-Index gespeichert. Es können keine anderen Jobs mit denselben Feldern erstellt werden, bis dieser Job gelöscht wurde.

  • title: Die Bezeichnung des Jobs, z. B. "Software-Entwickler". Es sind maximal 500 Zeichen zulässig.

    Damit Jobtitel, die von Standardjobtiteln abweichen, nicht zu fehlenden Suchergebnissen führen, verwendet Cloud Talent Solution alle bereitgestellten Felder im Job, um den Kontext des Jobs zu verstehen und intern einen "bereinigten" Titel des Jobs zu speichern. Wenn eine Suchanfrage an den Dienst gesendet wird, bereinigt dieser auch die Abfrage der Suche und ordnet die bereinigte Abfrage mithilfe der Ontologien den relevanten bereinigten Jobs zu.

  • description: Die Beschreibung eines Jobs. In der Regel eine mehrere Absätze lange Beschreibung des Unternehmens und weitere Informationen. Für Aufgaben, Qualifikationen und andere Jobmerkmale gibt es im Jobobjekt separate Felder. Es empfiehlt sich, diese separaten Jobfelder zu verwenden.

    In diesem Feld werden HTML-Eingaben akzeptiert und bereinigt. Markup-Tags wie Fett- und Kursivformatierung sowie sortierte und unsortierte Listen werden unterstützt. Es sind maximal 100.000 Zeichen zulässig.

Beispiele:

  • applicationInfo.uris[]: Die URL(s) der Anwendungsseite(n).

  • applicationInfo.emails[]: E-Mail-Adresse(n), an die Lebensläufe oder Bewerbungen gesendet werden sollen.

  • applicationInfo.instruction: Anwendungsanweisungen, z. B. "Senden Sie Ihre Bewerbung an ...". Dieses Feld akzeptiert und bereinigt HTML-Eingaben und akzeptiert fett, kursiv, geordnete Listen und ungeordnete Listen-Markup-Tags. Es sind maximal 3.000 Zeichen zulässig.

Häufig verwendete Felder

  • postingExpireTime: Die Zeit basierend auf dem Zeitstempel, zu der die Stellenausschreibung abläuft. Nach diesem Zeitpunkt wird der Job als abgelaufen markiert und nicht mehr in Suchergebnissen angezeigt. Dieses Datum muss vor dem 31.12.2100 in der Zeitzone UTC liegen. Ungültige Datumsangaben, z. B. Datumsangaben, die in der Vergangenheit liegen, werden ignoriert. Die Standardeinstellung für das Ablaufdatum des Jobs ist 30 Tage nach der Erstellung des Jobs in der Zeitzone UTC.

    Der Inhalt abgelaufener Jobs kann bis zu 60 Tage nach Ablauf des Jobs mit dem Operator GET abgerufen werden. Nach dieser Frist von 60 Tagen wird der Job nicht mehr über einen GET-Vorgang zurückgegeben.

  • addresses[]: Einstellungsstandorte für diesen Job. Es empfiehlt sich, die Adressen der Einstellungsstandorte vollständig anzugeben. Die API erzielt dann bessere Ergebnisse, zum Beispiel, wenn Jobs anhand der Anfahrtszeit gesucht werden. Es sind maximal 500 Zeichen zulässig. Weitere Informationen zu addresses[] finden Sie im Abschnitt Best Practices weiter unten.

  • promotionValue: Ein Wert größer als 0 definiert diesen Job als "vorgestellten Job", der nur bei Jobsuchen vom Typ FEATURED_JOBS zurückgegeben wird. Höhere Werte werden in den angezeigten Suchergebnissen höher zurückgegeben. Weitere Informationen finden Sie unter Hervorgehobene Jobs.

Benutzerdefinierte Felder

  • customAttributes: In diesem Feld werden bis zu 100 benutzerdefinierte Attribute gespeichert, die zum Speichern benutzerdefinierter Daten zum Job verwendet werden. Diese Felder können anhand einer Suchanforderung gefiltert werden, die das Feld jobQuery einer Jobsuchanforderung angibt. Darüber hinaus kann jedes dieser Felder im Attribut keywordSearchableJobCustomAttributes des Unternehmens festgelegt werden, sodass ein Suchbegriff, der in einem der Felder in keywordSearchableJobCustomAttributes genau übereinstimmt, jeden Job zurückgibt, der die Übereinstimmung enthält.

Job aktualisieren

Job ohne fieldMask aktualisieren

Java

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.


/** 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

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.

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

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.


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

Job mit fieldMask aktualisieren

Java

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.


/** 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

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.

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

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.


// 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 Practices

Standortfelder

Wann immer möglich, empfehlen wir, die Adresse eines Jobs im Feld addresses[] anzugeben. Damit wird die Standortermittlung und Relevanz verbessert. Wenn keine vollständige Adresse verfügbar ist, sollten Sie so viele Informationen wie möglich eingeben. Adressen werden bis zur Landesebene unterstützt. Regionsbezeichnungen (wie "Pazifischer Nordwesten") werden nicht unterstützt.

Cloud Talent Solution verwendet die Daten im Feld addresses[], um das Feld (nur Ausgabe) derivedInfo.locations[] zu füllen. Wenn keine vollständige Adresse angegeben wird, bestimmt der Dienst anhand von anderen Faktoren wie dem Namen des Unternehmens, ob für die Jobanzeige eine ausführlichere Adresse abgeleitet werden kann.

Wenn beispielsweise der Speicherort eines Softwarejobs als Mountain View angegeben ist und dem Unternehmen, dem der Job zugeordnet ist, Google ist, sucht der Dienst im Firmenobjekt nach einer besseren Straßenadresse das Feld headquartersAddress und wenn sich diese Adresse in derselben Stadt befindet wie die Stellenanzeige. In diesem Fall versteht der Dienst, dass der Job an dieser Adresse "wahrscheinlich" ist, und füllt das Feld derivedInfo.locations[] entsprechend aus.

Wenn keine Unternehmensadressdaten verfügbar sind, verwendet der Service eine Kombination aus proprietärem Wissen und Job- / Unternehmensinformationen, um das Feld derivedInfo.locations[] zu informieren.

Da es sich bei dem Wert derivedInfo.locations[] um eine Best-Guess-Methode handelt, möchten Sie möglicherweise die Daten derivedInfo.locations[] oder das Feld addresses verwenden, wenn Sie die Jobadresse anzeigen.

Einer Jobanzeige dürfen nicht mehr als 50 Standorte zugeordnet sein. Wenn ein Job mehr Standorte hat, können Sie den Job in mehrere Jobs mit jeweils einer eindeutigen Anforderungs-ID (z.B. 'ReqA', 'ReqA-1', 'ReqA-2' usw.) aufteilen, da mehrere Jobs mit demselben Job vorhanden sind requisitionId ,,, companyName und languageCode ist nicht erlaubt. Wenn das Original requisitionId erhalten bleiben muss, sollte ein CustomAttribute zur Speicherung verwendet werden. Zur Optimierung der Suche empfiehlt es sich, die am nächsten beieinander liegenden Standorte im selben Job zusammenzufassen.

Unterstützte Adressen

Jede Adresse, die von der Google Maps Geocoding API (im Feld formattedAddress) erkannt wird, wird von Cloud Talent Solution akzeptiert. Wenn Sie beim Erstellen eines Jobs oder bei einer Suche eine Adresse verwenden, die nicht erkannt wird, gibt der Dienst einen 400-Fehler zurück.

Falls die Adresse eines Unternehmens in der Google Maps Geocoding API falsch aufgeführt ist, melden Sie den Fehler, damit er korrigiert werden kann. Korrekturen können bis zu fünf Tage dauern.

Automatische Vervollständigung von Adressen

Cloud Talent Solution stellt keine Vorschläge zur automatischen Vervollständigung von Standorten bereit. Verwenden Sie für Vorschläge zur automatischen Vervollständigung die Google Maps Places API oder andere ähnliche Standortdienste.

Bundesstaats-/Bundesland- und landesweite Jobs sowie Telearbeitsjobs

Jobs können über das Feld postingRegion der Jobressource als landesweit, landesweit oder per Telearbeit angegeben werden.

  • Jobs vom Typ ADMINISTRATIVE_AREA und NATION werden für jede Suche zurückgegeben, deren Standort im Bundesstaat/Bundesland bzw. Land der Jobanzeige liegt. Wenn ein ADMINISTRATIVE_AREA -Job beispielsweise den Speicherort "WA, USA" hat, wird er für Suchvorgänge zurückgegeben, deren LocationFilter "Seattle" angibt.

  • Jobs vom Typ TELECOMMUTE werden bei jeder standortbezogenen Suche zurückgegeben, aber als weniger relevant behandelt. Sie können bei einer Suche als Ziel ausgewählt werden, indem das telecommutePreference -Flag in LocationFilter der Suche auf TELECOMMUTE_ALLOWED gesetzt wird.