【GAS】Google Apps Script 活用事例 Meet URL付きの予定を一度に複数登録するスクリプト
Meet URL付きの予定を登録したい
採用事務のお仕事には、やれ定期面談だの何だので、数十件単位で予定を登録したいケースが山のようにあります。
今までのやり方だとMeet URLの生成が自動にならず、それこそ数十回クリックしていました。数十件にもなると、Meet URLのつけ忘れがないか確認するだけで結構大変です。
今回は、上記で紹介されているスクリプトを参考に、手を加えてみました。
サンプルファイル
スクリプト全文
/**
* Meet URL付きのカレンダーを登録する
* https://auto-worker.com/blog/?p=6252
*
* @param {Object.<string | number>} 予定の名前や、開始時刻、終了時刻、詳細欄に記載するメモなど
* @return {string} 新規登録された予定のイベントID
*
*/
function registerEventsWithMeetUrl_(object) {
const calendarId = Session.getActiveUser().getUserLoginId();
//GoogleカレンダーでMeet会議が設定されるイベント登録パラメータを設定
const eventParam = {
conferenceData: {
createRequest: {
conferenceSolutionKey: {
type: "hangoutsMeet"
},
requestId: "123" //123のままでも問題ないし、適当で問題ない
}
},
summary: object.title,//カレンダータイトル
description: object.description,
start: {
dateTime: object.startTime
},
end: {
dateTime: object.endTime
},
attendees: object.attendees,
};
//CalendarAPIに対し、Meet会議付き予定を追加
const event = Calendar.Events.insert(eventParam, calendarId, {conferenceDataVersion: 1});
console.log('登録成功');
console.log(`イベントID:${event.id}`);
return event.id
}
function registerEventsFromSheetValue() {
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const sheet = spreadsheet.getSheetByName('登録用シート');
const values = sheet.getDataRange().getValues();
const header = values.shift();
const column = {
eventId: header.indexOf('イベントID'),
title: header.indexOf('イベント名'),
date: header.indexOf('イベント予定日'),
startTime: header.indexOf('開始時刻'),
endTime: header.indexOf('終了時刻'),
attendees: header.indexOf('出席者'),
description: header.indexOf('イベント詳細'),
status: header.indexOf('登録ステータス'),
}
console.log(column);
let count = 0;
for(let i = 0; i < values.length; i++){
//二重登録防止のため、イベントIDが空白かつ、登録済みが付いていない予定のみを登録する。
if(values[i][column.eventId] === '' && values[i][column.status] === ''){
//開始時刻
const startTime = new Date(values[i][column.date]);
startTime.setHours(values[i][column.startTime].getHours());
startTime.setMinutes(values[i][column.startTime].getMinutes());
//終了時刻
const endTime = new Date(startTime);
endTime.setHours(values[i][column.endTime].getHours());
endTime.setMinutes(values[i][column.endTime].getMinutes());
const row = i + 2;
console.log(`処理中:${row} 行目`);
//sendInvites、登録と同時にメールで通知する機能をオフにしたいのだが見つからず...
const object = {
title: values[i][column.title],
startTime: Utilities.formatDate(startTime, 'JST', "yyyy-MM-dd'T'HH:mm:ss.000+09:00"),
endTime: Utilities.formatDate(endTime, 'JST', "yyyy-MM-dd'T'HH:mm:ss.000+09:00"),
description: values[i][column.description],
attendees: generateAttendees_(values[i][column.attendees]),
}
const eventId = registerEventsWithMeetUrl_(object);
sheet.getRange(row, 1).setValue(eventId);
sheet.getRange(row, 8).setValue('登録済');
count += 1;
}
}
console.log(`登録件数: ${count} 件`);
}
/**
* 'attendees': [{'email': 'lpage@example.com'},{'email': 'sbrin@example.com'}],
* registerEventsWithMeetUrl_()内で、上記のように指定すると出席者を登録する事が出来る
*
* @param {string} string - 'aiueo@sample.com, abc@sample.com'
* @return {Array.<Object.<string>}
*/
function generateAttendees_(string){
const newArray = string.split(',').map(email => ({'email': email}));
console.log(newArray);
return newArray
}
Google Calendar APIのオンを忘れずに
公式レファレンス
javascriptでの実装例
オブジェクトの指定方法
小さくテストする
/**
* Meet URL付きのカレンダーを登録する
* https://auto-worker.com/blog/?p=6252
*
* @param {Object.<string | number>} 予定の名前や、開始時刻、終了時刻、詳細欄に記載するメモなど
*
*
*/
function registerEventsWithMeetUrl_(object) {
const calendarId = Session.getActiveUser().getUserLoginId();
//GoogleカレンダーでMeet会議が設定されるイベント登録パラメータを設定
const eventParam = {
conferenceData: {
createRequest: {
conferenceSolutionKey: {
type: "hangoutsMeet"
},
requestId: "123"
}
},
summary: object.title,//カレンダータイトル
description: object.description,
start: {
dateTime: object.startTime
},
end: {
dateTime: object.endTime
},
attendees: [
object.attendees
],
};
//CalendarAPIに対し、Meet会議付き予定を追加
Calendar.Events.insert(eventParam, calendarId, {conferenceDataVersion: 1});
console.log('登録成功');
}
function myFunction(){
const object = {
title: 'meet付きURLテスト',
startTime: "2023-02-08T01:00:00.000+09:00",
endTime: "2023-02-08T02:00:00.000+09:00",
description: '登録テスト',
attendees: {'email': 'sample@gmail.com'},
}
registerEventsWithMeetUrl_(object);
}
この記事が気に入ったらサポートをしてみませんか?