【GAS】Google Apps Script 活用事例 複数の採用メンバーの面接対応件数を取得するスクリプト
実は、去年の10月に転職しました。
前職でも面接日程をスプシに書き出したいなぁと思って、いくつか記事を書いてきました。
最近、Chat GPTを使ってGASを書いたりしているのですが、適格に指示を与えて、自分が欲しいアウトプットを得るって思いの外難しいものです。なので色々なユースケースで書いておくと後の自分のためになるかなと思っています。
function setValues(){
const values = getUniqueEvents();
SpreadsheetApp.getActiveSheet().getRange(1, 1, values.length, values[0].length).setValues(values);
}
/**
* Googleカレンダーから取得した面談の情報
*
* @param {Array.<string>} calIds - カレンダーのIDの1次元配列
* @param {number} offset - 数字
* @return {Array.<Object.<string>>}
*
*/
function getUniqueEvents() {
let results = [];
// 取得したい採用メンバーのカレンダーID
const calIds = ['nobi.nobita@sample.jp', 'sizuka@sample.jp', ];
calIds.forEach(calId => {
const events = getEventsByQuery_(calId, '面談');
results = results.concat(events); // 各ループで生成されたイベントを結果に追加する。
});
// eventIDを元に重複を削除する
const uniqueEvents = Array.from(new Set(results.map(event => event.eventId)))
.map(eventId => results.find(event => event.eventId === eventId));
console.log(uniqueEvents);
// 2次元配列に変換する
const newValues = uniqueEvents.map(event => Object.values(event));
console.log(newValues);
return newValues
}
/**
* n日後の予定を取得する
*
* @param {string} calId - カレンダーID 通常はメールアドレス
* @param {number} offset - .setDateの引数
* @param {string} query - 新卒など、カレンダータイトルに一致するもの
* @return {Array.<Object.<string>>}
*
*/
function getEventsByQuery_(calId, query) {
const cal = calId ? CalendarApp.getCalendarById(calId) : CalendarApp.getDefaultCalendar();
const startTime = new Date('2023-10-01T00:00:00');
const endTime = new Date('2024-02-29T23:59:59');
const events = cal.getEvents(startTime, endTime)
.filter(event => event.getTitle().includes(query))
.map(event => ({
eventId: event.getId(),
title: event.getTitle(),
startTime: Utilities.formatDate(event.getStartTime(), 'JST', 'yyyy/MM/dd (E) HH:mm'),
}));
console.log(events);
console.log(`query: ${calId}, 面談予定 ${events.length} 件`);
return events;
}
この記事が気に入ったらサポートをしてみませんか?