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.
- Um script extrai dados de uma tabela e retorna uma matriz de objetos como dados JSON .
- Em seguida, os dados são enviados para a ação de reunião Do Teams Create a 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 do Teams
- Análise de tabela
Instruções de instalaçã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 seus próprios para que você receba um convite.
Criar os scripts
- 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
}
Nomeie o script 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 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.
Crie um novo fluxo de nuvem instantânea.
Escolha Disparar manualmente um fluxo e selecione Criar.
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
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)
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)
- Pressione a entrada do Switch para a matriz inteira 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 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.