Office スクリプトのサンプル シナリオ: Teams でインタビューをスケジュールする
このシナリオでは、人事採用担当者が Teams の候補者との面接会議をスケジュールしています。 Excel ファイルで候補者の面接スケジュールを管理します。 候補者と面接官の両方に Teams 会議の招待を送信する必要があります。 その後、Teams 会議が送信されたことを確認して Excel ファイルを更新する必要があります。
このソリューションには、1 つの Power Automate フローで組み合わされた 3 つの手順があります。
- スクリプトはテーブルからデータを抽出し、オブジェクトの配列を JSON データとして返します。
- その後、データは Teams 会議の 作成 アクションに送信され、招待が送信されます。
- 招待の状態を更新するために、同じ JSON データが別のスクリプトに送信されます。
JSON の操作の詳細については、「JSON を 使用して Office スクリプトとの間でデータを渡す」を参照してください。
対象となるスクリプティング スキル
- Power Automate フロー
- Teams 統合
- テーブルの解析
セットアップ手順
ブックをダウンロードする
サンプル ブックを OneDrive にダウンロードします。
Excel でブックを開きます。
招待を受け取るように、少なくとも 1 つのメール アドレスを自分のものに変更します。
スクリプトを作成する
- [ 自動化 ] タブの [ 新しいスクリプト ] を選択し、次のスクリプトをエディターに貼り付けます。 これにより、テーブル データが抽出され、招待がスケジュールされます。
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
}
フローのスクリプト 「 インタビューのスケジュール」 に名前を付けます。
次のコードを使用して、別の新しいスクリプトを作成します。 これにより、行が招待済みとしてマークされます。
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
}
- フローの 2 番目 のスクリプト 「送信された招待を記録する 」という名前を付けます。
Power Automate フローを作成する
このフローでは、面接スケジュール スクリプトを実行し、Teams 会議を送信し、アクティビティをブックに記録し直します。
新しい インスタント クラウド フローを作成します。
[ フローを手動でトリガーする ] を選択し、[ 作成] を選択します。
フロー ビルダーで、[アクションの追加] + ボタンを選択 します。 Excel Online (Business) コネクタの [スクリプトの実行] アクションを使用します。 次の値を使用してアクションを完了します。
- 場所: OneDrive for Business
- ドキュメント ライブラリ: OneDrive
- ファイル: hr-interviews.xlsx (ファイル ブラウザーから選択)
- スクリプト: インタビューをスケジュール
Microsoft Teams コネクタの [Teams 会議の作成] アクションを使用するアクションを追加します。 Excel コネクタから動的コンテンツを選択すると、フロー に対して [For each ] ブロックが生成されます。 次の値を使用してコネクタを完了します。
- 件名: Contoso のインタビュー
- メッセージ: メッセージ ( スクリプトの実行からの動的コンテンツ)
- タイム ゾーン: 太平洋標準時
- 開始時刻: StartTime ( スクリプトの実行からの動的コンテンツ)
- 終了時刻: FinishTime ( スクリプトの実行からの動的コンテンツ)
- 予定表 ID: 予定表
- 必須出席者: CandidateEmail ; InterviewerEmail ( スクリプトの実行 からの動的コンテンツ - 値を区切る ';' を書き留めます)
同じ [ 各ブロック] に、別の [スクリプトの実行] アクションを 追加します。 次の値を使用します。
- 場所: OneDrive for Business
- ドキュメント ライブラリ: OneDrive
- ファイル: hr-interviews.xlsx (ファイル ブラウザーから選択)
- スクリプト: 送信された招待を記録する
- invites: result ( スクリプトの実行からの動的コンテンツ)
- 最初 に[入力を配列全体に切り替える] を押します。
フローを保存します。 フロー デザイナーは次の図のようになります。
フロー エディター ページの [テスト ] ボタンを使用するか、[ マイ フロー ] タブでフローを実行します。プロンプトが表示されたら、必ずアクセスを許可してください。
トレーニング ビデオ: Excel データから Teams 会議を送信する
このサンプルのバージョンを YouTube で確認できます。 彼のバージョンでは、列の変更や古い会議時間を処理する、より堅牢なスクリプトが使用されています。
Office Scripts