Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste cenário, você é um recrutador de RH agendando reuniões de entrevista com candidatos no Teams. Você gerencia o agendamento 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 combinadas em um único fluxo do Power Automate.
- Um script extrai dados de uma tabela e retorna uma matriz de objetos como dados JSON .
- Os dados são então enviados para a ação Criar uma reunião do Teams para enviar convites.
- 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 com o Teams
- Análise de tabela
Instruções de configuração
Baixar a pasta de trabalho
Baixe a pasta de trabalho de exemplo para o OneDrive.
Abra a pasta de trabalho no Excel.
Altere pelo menos um dos endereços de email para o seu próprio para receber um convite.
Crie os scripts
- Na guia Automatizar , selecione Criar Novo Script>no Editor de Códigos. Cole o script a seguir no editor. Isso extrairá os 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
}
Nomeie o script como Agendar Entrevistas para o fluxo.
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
}
- Nomeie o segundo script como Record Sent Invites para o fluxo.
Criar o fluxo do Power Automate
Esse fluxo executa os scripts de agendamento de entrevistas, envia as reuniões do Teams e registra a atividade de volta na pasta de trabalho.
Crie um novo fluxo de nuvem do Instant.
Escolha Disparar manualmente um fluxo e selecione Criar.
No construtor de fluxo, selecione o + botão e Adicionar uma ação. Use a ação Executar script do conector do Excel Online (Business). Conclua a ação com os seguintes valores.
- Localização: OneDrive for Business
- Biblioteca de Documentos: OneDrive
- Arquivo: hr-interviews.xlsx (Escolhido por meio do navegador de arquivos)
-
Script: Agendar Entrevistas
Adicione uma ação que use a ação Criar uma reunião do Microsoft Teams do conector do Microsoft Teams. Ao selecionar conteúdo dinâmico no conector do Excel, um bloco For each será gerado para o fluxo. Preencha o conector com os seguintes valores.
- Assunto: Entrevista da Contoso
- Mensagem: Mensagem (conteúdo dinâmico de Executar script)
- Fuso horário: Hora Standard 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)
- Calendar id: Calendar
-
Participantes necessários: CandidateEmail ; InterviewerEmail (conteúdo dinâmico do script Executar - observe o ';' separando os valores)
No mesmo 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: Registrar convites enviados
-
convites: resultado (conteúdo dinâmico de Executar script)
- Pressione Alternar entrada para toda a matriz primeiro.
- Pressione Alternar entrada para toda a matriz primeiro.
Salve o fluxo. O designer de fluxo deve se parecer com a imagem a seguir.
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 a partir 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 colunas variáveis e horários de reunião obsoletos.