Compartilhar via


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

Neste cenário, é um recrutador de RH que agenda reuniões de entrevistas com candidatos no Teams. Pode gerir a agenda de entrevistas de candidatos num ficheiro do Excel. Terá de enviar o convite de reunião do Teams para os candidatos e entrevistadores. Em seguida, tem de atualizar o ficheiro do Excel com a confirmação de que as reuniões do Teams foram enviadas.

A solução tem três passos que são combinados num único fluxo do Power Automate.

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

Para obter mais informações sobre como trabalhar com JSON, leia Utilizar JSON para transmitir dados de e para Scripts do Office.

Competências de scripting abrangidas

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

Instruções de configuração

Transferir o livro

  1. Transfira o livro de exemplo para o seu OneDrive.

  2. Abra a pasta de trabalho no Excel.

  3. Altere pelo menos um dos endereços de e-mail para o seu próprio endereço para receber um convite.

Criar os scripts

  1. No separador Automatizar , selecione Novo Script>Criar no Editor de Código. Cole o seguinte script no editor. Isto irá extrair dados da 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. Atribua o nome Schedule Interviews ao script para o fluxo.

  2. Crie outro novo script com o seguinte código. Esta ação 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. Atribua o nome Convites Enviados ao segundo registo de script para o fluxo.

Criar o fluxo do Power Automate

Este fluxo executa os scripts de agendamento de entrevistas, envia as reuniões do Teams e grava a atividade novamente no livro.

  1. Criar um novo fluxo de cloud instantânea.

  2. Selecione Acionar manualmente um fluxo e selecione Criar.

  3. No construtor de fluxos, selecione o + botão e Adicionar uma ação. Utilize a ação Executar script do conector do Excel Online (Empresas). Conclua a ação com os seguintes valores.

    • Localização: OneDrive for Business
    • Biblioteca de Documentos: OneDrive
    • Ficheiro: hr-interviews.xlsx (Escolhido através do browser de ficheiros)
    • Script: Agendar Entrevistas A ação de script Executar concluída para obter dados de entrevistas a partir do livro.
  4. Adicione uma ação que utiliza a ação Criar uma reunião do conector do Microsoft Teams. À medida que seleciona conteúdo dinâmico a partir do conector do Excel, será gerado um para cada bloco para o fluxo. Conclua o conector com os seguintes valores.

    • Assunto: Entrevista da Contoso
    • Mensagem: Mensagem (conteúdo dinâmico do Script de execução)
    • Fuso horário: Hora Standard Pacífico
    • Hora de início: StartTime (conteúdo dinâmico do script Executar)
    • Hora de fim: FinishTime (conteúdo dinâmico do script Executar)
    • ID do Calendário: Calendário
    • Participantes obrigatórios: CandidateEmail ; InterviewerEmail (conteúdo dinâmico do script Executar – tenha em atenção o ";" que separa os valores) A ação do Teams concluída para agendar reuniões.
  5. Na mesma ação Para cada bloco, adicione outra ação Executar script . Use os seguintes valores.

    • Localização: OneDrive for Business
    • Biblioteca de Documentos: OneDrive
    • Ficheiro: hr-interviews.xlsx (Escolhido através do browser de ficheiros)
    • Script: Gravar Convites Enviados
    • convites: resultado (conteúdo dinâmico do script Executar)
  6. Guarde o fluxo. O estruturador de fluxo deve ter um aspeto semelhante à imagem seguinte.

    Um diagrama do fluxo concluído que mostra dois passos que levam a um controlo Para cada e dois passos dentro do controlo Para cada.

  7. Utilize o botão Testar na página do editor de fluxos ou execute o fluxo através do separador Os meus fluxos . Certifique-se de que permite o acesso quando lhe for pedido.

Vídeo de formação: Enviar uma reunião do Teams a partir de dados do Excel

Veja Sudhi Ramamurthy a percorrer uma versão deste exemplo no YouTube. A sua versão utiliza um script mais robusto que processa a alteração de colunas e tempos de reunião obsoletos.