Partager via


Exemple de scénario de scripts Office : Planifier des entretiens dans Teams

Dans ce scénario, vous êtes un recruteur rh qui planifie des réunions d’entretien avec des candidats dans Teams. Vous gérez la planification des entretiens des candidats dans un fichier Excel. Vous devez envoyer l’invitation à la réunion Teams au candidat et aux intervieweurs. Vous devez ensuite mettre à jour le fichier Excel avec la confirmation que les réunions Teams ont été envoyées.

La solution comporte trois étapes qui sont combinées dans un seul flux Power Automate.

  1. Un script extrait des données d’une table et retourne un tableau d’objets sous forme de données JSON .
  2. Les données sont ensuite envoyées à l’action De réunion Teams Créer une réunion Teams pour envoyer des invitations.
  3. Les mêmes données JSON sont envoyées à un autre script pour mettre à jour le status de l’invitation.

Pour plus d’informations sur l’utilisation de JSON, consultez Utiliser JSON pour passer des données vers et à partir de scripts Office.

Compétences en écriture de scripts couvertes

  • Flux Power Automate
  • Intégration de Teams
  • Analyse de table

Instructions d’installation

Télécharger le classeur

  1. Téléchargez l’exemple de classeur sur votre OneDrive.

  2. Ouvrez le classeur dans Excel.

  3. Remplacez au moins l’une des adresses e-mail par la vôtre afin de recevoir une invitation.

Créer les scripts

  1. Sous l’onglet Automatiser , sélectionnez Nouveau script et collez le script suivant dans l’éditeur. Cette opération extrait les données de table pour planifier des invitations.
function main(workbook: ExcelScript.Workbook): InterviewInvite[] {
  const MEETING_DURATION = workbook.getWorksheet("Constants").getRange("B1").getValue() as number;
  const MESSAGE_TEMPLATE = workbook.getWorksheet("Constants").getRange("B2").getValue() as string;

  // Get the interview candidate information.
  const sheet = workbook.getWorksheet("Interviews");
  const table = sheet.getTables()[0];
  const dataRows = table.getRangeBetweenHeaderAndTotal().getValues();

  // Convert the table rows into InterviewInvite objects for the flow.
  let invites: InterviewInvite[] = [];
  dataRows.forEach((row) => {
    const inviteSent = row[1] as boolean;
    if (!inviteSent) {
      const startTime = new Date(Math.round(((row[6] as number) - 25569) * 86400 * 1000));
      const finishTime = new Date(startTime.getTime() + MEETING_DURATION * 60 * 1000);
      const candidateName = row[2] as string;
      const interviewerName = row[4] as string;

      invites.push({
        ID: row[0] as string,
        Candidate: candidateName,
        CandidateEmail: row[3] as string,
        Interviewer: row[4] as string,
        InterviewerEmail: row[5] as string,
        StartTime: startTime.toISOString(),
        FinishTime: finishTime.toISOString(),
        Message: generateInviteMessage(MESSAGE_TEMPLATE, candidateName, interviewerName)
      });
    }    
  });

  console.log(JSON.stringify(invites));
  return invites;
}

function generateInviteMessage(
  messageTemplate: string,
   candidate: string,
   interviewer: string) : string {
  return messageTemplate.replace("_Candidate_", candidate).replace("_Interviewer_", interviewer);
}

// The interview invite information.
interface InterviewInvite {
  ID: string
  Candidate: string
  CandidateEmail: string
  Interviewer: string
  InterviewerEmail: string
  StartTime: string
  FinishTime: string
  Message: string
}
  1. Nommez le script Planifier des entretiens pour le flux.

  2. Créez un autre script avec le code suivant. Cela marque les lignes comme étant invitées.

function main(workbook: ExcelScript.Workbook, invites: InterviewInvite[]) {
  const table = workbook.getWorksheet("Interviews").getTables()[0];

  // Get the ID and Invite Sent columns from the table.
  const idColumn = table.getColumnByName("ID");
  const idRange = idColumn.getRangeBetweenHeaderAndTotal().getValues();
  const inviteSentColumn = table.getColumnByName("Invite Sent?");

  const dataRowCount = idRange.length;

  // Find matching IDs to mark the correct row.
  for (let row = 0; row < dataRowCount; row++){
    let inviteSent = invites.find((invite) => {
      return invite.ID == idRange[row][0] as string;
    });

    if (inviteSent) {
      inviteSentColumn.getRangeBetweenHeaderAndTotal().getCell(row, 0).setValue(true);
      console.log(`Invite for ${inviteSent.Candidate} has been sent.`);
    }
  } 
}

// The interview invite information.
interface InterviewInvite {
  ID: string
  Candidate: string
  CandidateEmail: string
  Interviewer: string
  InterviewerEmail: string
  StartTime: string
  FinishTime: string
  Message: string
}
  1. Nommez le deuxième script Record Sent Invites pour le flux.

Créer le flux Power Automate

Ce flux exécute les scripts de planification des entretiens, envoie les réunions Teams et enregistre l’activité dans le classeur.

  1. Créez un flux cloud instantané.

  2. Choisissez Déclencher manuellement un flux , puis sélectionnez Créer.

  3. Dans le générateur de flux, sélectionnez le + bouton et Ajouter une action. Utilisez l’action Exécuter le script du connecteur Excel Online (Business). Terminez l’action avec les valeurs suivantes.

    • Emplacement : OneDrive Entreprise
    • Bibliothèque de documents : OneDrive
    • Fichier : hr-interviews.xlsx (choisi par le biais de l’explorateur de fichiers)
    • Script : Planifier des entretiens L’action Exécuter le script terminée pour obtenir les données d’entrevue à partir du classeur.
  4. Ajoutez une action qui utilise l’action Créer une réunion Teams du connecteur Microsoft Teams. Lorsque vous sélectionnez du contenu dynamique à partir du connecteur Excel, un bloc For each est généré pour votre flux. Complétez le connecteur avec les valeurs suivantes.

    • Objet : Interview contoso
    • Message : Message (contenu dynamique de l’exécution du script)
    • Fuseau horaire : Heure standard du Pacifique
    • Heure de début : StartTime (contenu dynamique de l’exécution du script)
    • Heure de fin : FinishTime (contenu dynamique de l’exécution du script)
    • ID de calendrier : Calendrier
    • Participants obligatoires : CandidateEmail ; InterviewerEmail (contenu dynamique de l’exécution du script - notez le « ; » séparant les valeurs) Action Teams terminée pour planifier des réunions.
  5. Dans le même bloc Pour chaque bloc, ajoutez une autre action Exécuter le script . Utilisez les valeurs ci-après.

    • Emplacement : OneDrive Entreprise
    • Bibliothèque de documents : OneDrive
    • Fichier : hr-interviews.xlsx (choisi par le biais de l’explorateur de fichiers)
    • Script : Enregistrer les invitations envoyées
    • invites : résultat (contenu dynamique de l’exécution du script)
  6. Enregistrez le flux. Le concepteur de flux doit ressembler à l’image suivante.

    Diagramme du flux terminé qui montre deux étapes menant à un contrôle For each et deux étapes dans le contrôle For each.

  7. Utilisez le bouton Test de la page de l’éditeur de flux ou exécutez le flux via votre onglet Mes flux . Veillez à autoriser l’accès lorsque vous y êtes invité.

Vidéo de formation : Envoyer une réunion Teams à partir de données Excel

Regardez Sudhi Ramamurthy parcourir une version de cet exemple sur YouTube. Sa version utilise un script plus robuste qui gère les colonnes changeantes et les heures de réunion obsolètes.