Compartilhar via


Cenário de exemplo de Scripts do Office: agendar entrevistas no Teams

Nesse cenário, você é um recrutador de RH agendando reuniões de entrevista com candidatos no Teams. Você gerencia a agenda de entrevistas de candidatos em um arquivo do Excel. Você precisará enviar o convite da reunião do Teams para o candidato e os entrevistadores. Em seguida, você precisa atualizar o arquivo do Excel com a confirmação de que as reuniões do Teams foram enviadas.

A solução tem três etapas que são combinadas em um único fluxo do Power Automate.

  1. Um script extrai dados de uma tabela e retorna uma matriz de objetos como dados JSON .
  2. Em seguida, os dados são enviados para a ação de reunião Do Teams Create a Teams para enviar convites.
  3. Os mesmos dados JSON são enviados para outro script para atualizar o status do convite.

Para obter mais informações sobre como trabalhar com JSON, leia Usar JSON para passar dados de e para scripts do Office.

Habilidades de script abordadas

  • Fluxos do Power Automate
  • Integração do Teams
  • Análise de tabela

Instruções de instalação

Baixar a pasta de trabalho

  1. Baixe a pasta de trabalho de exemplo para o OneDrive.

  2. Abra a pasta de trabalho no Excel.

  3. Altere pelo menos um dos endereços de email para seus próprios para que você receba um convite.

Criar os scripts

  1. Na guia Automatizar, selecioneNovo Script e cole o script a seguir no editor. Isso extrairá dados de tabela para agendar convites.
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. Nomeie o script Agendar Entrevistas para o fluxo.

  2. Crie outro novo script com o código a seguir. Isso marcará as linhas como convidadas.

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. Nomeie o segundo script Record Sent Invites para o fluxo.

Criar o fluxo do Power Automate

Esse fluxo executa os scripts de agendamento de entrevista, envia as reuniões do Teams e registra a atividade de volta na pasta de trabalho.

  1. Crie um novo fluxo de nuvem instantânea.

  2. Escolha Disparar manualmente um fluxo e selecione Criar.

  3. No construtor de fluxos, selecione o + botão e Adicione uma ação. Use a ação executar script do conector do Excel Online (Business). Conclua a ação com os valores a seguir.

    • Localização: OneDrive for Business
    • Biblioteca de Documentos: OneDrive
    • Arquivo: hr-interviews.xlsx (Escolhido por meio do navegador de arquivos)
    • Script: Agendar entrevistas A ação de script de execução concluída para obter dados de entrevista da pasta de trabalho.
  4. Adicione uma ação que usa a ação criar uma reunião do Microsoft Teams connector. À medida que você seleciona conteúdo dinâmico no conector do Excel, um Para cada bloco será gerado para o fluxo. Conclua o conector com os valores a seguir.

    • Assunto: Entrevista com Contoso
    • Mensagem: Mensagem (conteúdo dinâmico de Executar script)
    • Fuso horário: Horário Padrão do Pacífico
    • Hora de início: StartTime (conteúdo dinâmico de Executar script)
    • Hora de término: FinishTime (conteúdo dinâmico de Executar script)
    • ID do calendário: Calendário
    • Participantes obrigatórios: CandidateEmail ; InterviewerEmail (conteúdo dinâmico de Executar script – observe o ';' separando os valores) A ação concluída do Teams para agendar reuniões.
  5. No mesmo Para cada bloco, adicione outra ação Executar script . Use os seguintes valores.

    • Localização: OneDrive for Business
    • Biblioteca de Documentos: OneDrive
    • Arquivo: hr-interviews.xlsx (Escolhido por meio do navegador de arquivos)
    • Script: Gravar convites enviados
    • convites: resultado (conteúdo dinâmico de Executar script)
  6. Salve o fluxo. O designer de fluxo deve se parecer com a imagem a seguir.

    Um diagrama do fluxo concluído que mostra duas etapas que levam a um para cada controle e duas etapas dentro do controle For each.

  7. Use o botão Testar na página do editor de fluxo ou execute o fluxo por meio da guia Meus fluxos . Certifique-se de permitir o acesso quando solicitado.

Vídeo de treinamento: enviar uma reunião do Teams de dados do Excel

Assista Sudhi Ramamurthy percorrer uma versão deste exemplo no YouTube. Sua versão usa um script mais robusto que lida com a alteração de colunas e tempos de reunião obsoletos.