Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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.
- Um script extrai dados de uma tabela e devolve uma matriz de objetos como dados JSON .
- Em seguida, os dados são enviados para a ação Criar uma reunião do Teams no Teams para enviar convites.
- 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
Transfira o livro de exemplo para o seu OneDrive.
Abra a pasta de trabalho no Excel.
Altere pelo menos um dos endereços de e-mail para o seu próprio endereço para receber um convite.
Criar os scripts
- 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
}
Atribua o nome Schedule Interviews ao script para o fluxo.
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
}
- 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.
Criar um novo fluxo de cloud instantânea.
Selecione Acionar manualmente um fluxo e selecione Criar.
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
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)
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)
Guarde o fluxo. O estruturador de fluxo deve ter um aspeto semelhante à imagem seguinte.
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.