ãããªæ©ã¿ããã¾ãããï¼
ãåã©ãã®å¦æ ¡è¡äºã夫ã®ã·ãããèªåã®å¤å¤â¦å®¶æ3人åãã«ã¬ã³ãã¼å ¥åããã ãã§30åæº¶ããã ãã¹ãã¬ããã·ã¼ãã«ã¾ã¨ããã¤ãã³ãä¸è¦§ããæ¯åæåã§Googleã«ã¬ã³ãã¼ã«è»¢è¨ãã¦ããã ããã©ã¼ã ããç³ãè¾¼ã¿ãåãä»ããããèªåã§äºå®ç»é²ã¾ã§è¡ã£ã¦ã»ããã
ããã«ã¡ã¯ãçè·å¸«ã§GAS大好ããªåã§ããç§ã®å®¶ã¯ï¼å¤«å©¦ã®5人家æã§ãããã«å¯æ¥ï¼Amazonç©è²©ï¼ã®ã¤ãã³ããè¬åº§ããªãã·ãã£ã®ãªãä¼ã¾ã§å ¥ãã¨ãå¹´éã§æ°ç¾ä»¶ã®äºå®ãã«ã¬ã³ãã¼ã«å ¥ãã¦ãã¾ããæå ¥åã§ã¯çµ¶å¯¾ã«ç ´ç¶»ããã®ã§ãæ©ã段éã§GASï¼Google Apps Scriptï¼ã§ã«ã¬ã³ãã¼ç»é²ãèªååãã¾ããã
ãã®è¨äºã§ã¯ãGAS ã«ã¬ã³ãã¼ äºå®ç»é²ãã§æ¤ç´¢ãã¦ããæ¹åãã«ã10è¡ã§åãæçã³ã¼ããããå®éç¨ã§å¹ãå¿ç¨ãã¯ã¾ã§ã¾ã¨ãã¦ç´¹ä»ãã¾ãã
GASã§ã«ã¬ã³ãã¼ç»é²ããå ¨ä½å
ä»çµã¿ã¯ã¨ã¦ãã·ã³ãã«ã§ããGASã® CalendarApp ãµã¼ãã¹ã使ã£ã¦ã以ä¸ã®æµãã§äºå®ãä½ãã¾ãã
- ç»é²å ã®ã«ã¬ã³ãã¼ãåå¾ããï¼ããã©ã«ãã¯èªåã®ã¡ã¤ã³ã«ã¬ã³ãã¼ï¼
- æ¥æã»ã¿ã¤ãã«ã»èª¬æã»å ´æãªã©ãæå®ãã¦
createEvent()ãå¼ã¶ - å¿ è¦ã«å¿ãã¦ã²ã¹ãæå¾ ãéç¥è¨å®ã追å ãã
- ã¹ãã¬ããã·ã¼ãããã©ã¼ã ãããªã¬ã¼ã«ãã¦ãèªåå®è¡ãã
ããããã¤ã³ããªã®ã§ãããGAS㯠Googleã«ã¬ã³ãã¼ã«å¯¾ãã¦ã»ã¼ã«ã¬ã³ãã¼ã¢ããªã¨åçã®æä½ãã§ãã¾ããåçºã®äºå®ããç¹°ãè¿ãã¤ãã³ãããè¤æ°äººæå¾ ãå ¨é¨OKããããGoogleã¢ã«ã¦ã³ãããããã°è¿½å è²»ç¨ã¼ãã§ä½¿ãã¾ãã
äºåæºå
script.google.com ã§æ°è¦ããã¸ã§ã¯ããä½ãããã¡ã¤ã«åã CalendarAutoCreate ãªã©ã«å¤æ´ãããã§æºåå®äºã§ããç¹å¥ãªã©ã¤ãã©ãªãAPIãã¼ã¯ä¸è¦ã§ãããã GAS ã®ããã¨ããã§ããã
æç10è¡ï¼1ä»¶ã®äºå®ãç»é²ãã
ã¾ãã¯ã·ã³ãã«ãªãææ¥ã®10æã11æã«ãæ¯å»è ãã¨ããäºå®ãå ¥ãããã³ã¼ãããè¦ã¦ã¿ã¾ãããã
function createSingleEvent() {
const cal = CalendarApp.getDefaultCalendar();
const start = new Date('2026-04-22T10:00:00+09:00');
const end = new Date('2026-04-22T11:00:00+09:00');
cal.createEvent('æ¯å»è
', start, end, {
description: '宿å¥è¨ºãä¿éºè¨¼æå',
location: 'ãããã³ã¿ã«ã¯ãªããã¯'
});
}
å®è¡ãã¦è¨±å¯ãä¸ããã°ãããã«Googleã«ã¬ã³ãã¼ã«äºå®ãå ¥ãã¾ããã³ã¼ãã®æå³ã¯ã»ã¼ä¸è¡ä¸è¡èªããã¬ãã«ã§ããããã¤ã³ãã¯ä»¥ä¸ã
CalendarApp.getDefaultCalendar()ã§èªåã®ã¡ã¤ã³ã«ã¬ã³ãã¼ãåå¾new Date('...+09:00')ã§æ¥æ¬æéã¨ãã¦æç¤ºçã«æå®ï¼ãã大äºï¼createEvent()ã®4ã¤ç®ã®å¼æ°ï¼ãªãã¸ã§ã¯ãï¼ã«èª¬æãå ´æã渡ãã
ç§ã¯æåãã¿ã¤ã ã¾ã¼ã³æå®ãçç¥ã㦠new Date('2026-04-22 10:00:00') ã¨æ¸ãã¦ãUTCã¨ãã¦è§£éããã¦9æéãºã¬ãã¨ããå°çãè¦ã¾ãããGASã§ã«ã¬ã³ãã¼æä½ãããªããã¿ã¤ã ã¾ã¼ã³ã¯å¿
ãæç¤ºãéåã§ãã
å¿ç¨ã«å¹ã3ã¤ã®ãã¤ã³ã
åçºã§1ä»¶å ¥ããã ããªãæå ¥åã®ã»ããæ©ãã§ããGASã®æ¬é ã¯ãã¹ãã¬ããã·ã¼ããå¤é¨ãã¼ã¿ãã䏿¬ç»é²ãããã¨ãããå®éç¨ã§å¹ããã¤ã³ãã3ã¤ç´¹ä»ãã¾ãã
ãã¤ã³ã1ï¼ã¹ãã¬ããã·ã¼ããã䏿¬ç»é²ãã
Aåã«æ¥ä»ãBåã«éå§æå»ãCåã«çµäºæå»ãDåã«ã¿ã¤ãã«ãEåã«å ´æããããªã·ã¼ããç¨æãã¦ã䏿°ã«ç»é²ãããã¿ã¼ã³ã§ãã
function createFromSheet() {
const cal = CalendarApp.getDefaultCalendar();
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('äºå®');
const rows = sheet.getRange(2, 1, sheet.getLastRow() - 1, 5).getValues();
rows.forEach(function(r) {
const startHour = r[1] instanceof Date ? r[1].getHours() : Number(r[1]);
const endHour = r[2] instanceof Date ? r[2].getHours() : Number(r[2]);
const start = new Date(r[0].getFullYear(), r[0].getMonth(), r[0].getDate(), startHour, 0);
const end = new Date(r[0].getFullYear(), r[0].getMonth(), r[0].getDate(), endHour, 0);
cal.createEvent(r[3], start, end, { location: r[4] });
});
}
ã®å¦æ ¡è¡äºãã¹ãã¬ããã·ã¼ãã«ä¸è¦§ã§å ¥ãã¦ã年度åãã«ä¸æ°ã«ã«ã¬ã³ãã¼åãããã¿ãããªéç¨ã«ã´ã£ããã§ããç§ã¯æ¯å¹´4æã«å¦æ ¡ãããããå¹´éäºå®è¡¨ãè¦ãªããå ¥åããã®ã§ãããã·ã¼ãå ¥åâGAS䏿¬æµãè¾¼ã¿ãå§åçã«æ©ãã§ãã
ãã¤ã³ã2ï¼éè¤ãã§ãã¯ãå ¥ãã
éã«ä½åº¦ãå®è¡ããã¨ãåãã¿ã¤ãã«ã®äºå®ãã«ã¬ã³ãã¼ã«ä½åãã§ãã¦ãã¾ãã¾ããç»é²åã«éè¤ãã§ãã¯ãå ¥ãã¾ãããã
const exists = cal.getEvents(start, end).some(function(e) {
return e.getTitle() === r[3];
});
if (exists) return;
éå§ãçµäºæå»ã®ç¯å²ã«ååã¤ãã³ããããã°ããã®è¡ã¯ã¹ããããããã¨ããã·ã³ãã«ãªå¦çãå°å³ã§ãããããå ¥ããªãã¨ãã«ã¬ã³ãã¼ãåãäºå®ã§åãå°½ããããäºæ ãèµ·ãã¾ãï¼çµé¨è«ï¼ã
ãã¤ã³ã3ï¼ãããã¢ããéç¥ã¨è²åã
ãã£ããGASã§ç»é²ãããªããéç¥ãè²ãèªåã§ä»ãã¾ãããã
const event = cal.createEvent(r[3], start, end, { location: r[4] });
event.addPopupReminder(30);
event.setColor(CalendarApp.EventColor.PALE_RED);
addPopupReminder(30) ã¯30ååã®ãããã¢ããéç¥ãsetColor ã§ã¤ãã³ãã®è²ãå¤ãããã¾ããåã©ãã®äºå®ã¯ç·ãèªåã®å¤å¤ã¯èµ¤ã坿¥ã®äºå®ã¯éãã¿ããã«è²ã§ç´æçã«ææ¡ã§ããããã«ãªãã¾ããå®¶æã«ã¬ã³ãã¼éç¨ããã¦ãããªãããã®è²åããæ¬å½ã«å¹ãã¾ãã
å¿ç¨ç·¨ï¼ãã©ã¼ã éä¿¡ã¨åæã«ã«ã¬ã³ãã¼ç»é²
ããã«ä¸æ©é²ãã§ãGoogleãã©ã¼ã ã®åçãããªã¬ã¼ã«ã«ã¬ã³ãã¼ç»é²ããä»çµã¿ãä½ãã¾ãããªãä¼ä¸»å¬ã坿¥ã®é¢è«äºç´ã§è¶ 便å©ãªãã¿ã¼ã³ã§ãã
ãã©ã¼ã ã®åçã¹ãã¬ããã·ã¼ãã§ onFormSubmit ããªã¬ã¼ãè¨å®ãã以ä¸ã®ã³ã¼ããä»è¾¼ã¿ã¾ãã
function onFormSubmit(e) {
const cal = CalendarApp.getDefaultCalendar();
const values = e.values; // [éä¿¡æ¥æ, åå, æ¥ä», éå§, çµäº, ã¡ã¼ã«ã¢ãã¬ã¹]
const start = new Date(values[2] + ' ' + values[3] + '+09:00');
const end = new Date(values[2] + ' ' + values[4] + '+09:00');
cal.createEvent(values[1] + 'ããã¨ã®é¢è«', start, end, {
description: 'ç³è¾¼è
: ' + values[1],
guests: values[5],
sendInvites: true
});
}
guests ã«ã¡ã¼ã«ã¢ãã¬ã¹ã渡ã㦠sendInvites: true ãæå®ããã¨ãç¸æã«ãGoogleã«ã¬ã³ãã¼æå¾
ã¡ã¼ã«ãéããã¾ããç§ã¯å¯æ¥ç¸è«ã®ãã©ã¼ã ãããã§éç¨ãã¦ãã¦ãç³è¾¼ã¿ãã30ç§ä»¥å
ã«åæ¹ã®ã«ã¬ã³ãã¼ã«äºå®ãå
¥ãæµããä½ãã¾ãããç¸æãããå¯¾å¿æ©ãã§ããï¼ãã¨è¨ããã坿¬¡å¹æãããã¾ãã
ç¹°ãè¿ãã¤ãã³ããä½ã
æ¯é±æææ¥ã®æä¼ãã®ãããªç¹°ãè¿ãã¤ãã³ããGASã§ä½ãã¾ãã
const recurrence = CalendarApp.newRecurrence().addWeeklyRule().onlyOnWeekday(CalendarApp.Weekday.MONDAY);
cal.createEventSeries('æä¼', start, end, recurrence);
ããã§ãã°ããæ¯é±ææã«æä¼ãèªåè¨å®ããã¾ããåã©ãã®ç¿ãäºãå®ä¾ãã¼ãã£ã³ã°ãªã©ãå°å³ã«å½¹ç«ã¤ä½¿ãæ¹ã§ãã
ã¤ã¾ããããããã¤ã³ãã¾ã¨ã
æå¾ã«ãåå¿è ãã¤ã¾ãããããé¨åãã¾ã¨ãã¾ããç§èªèº«ãããã£ãè½ã¨ãç©´ã°ãããªã®ã§ãåãè½ãè¸ã¾ãªãã§ãã ããã
- **ã¿ã¤ã ã¾ã¼ã³ãºã¬**ï¼
new Date()ã«ã¯å¿ ã+09:00ãã¤ããããå¹´ææ¥æåãæ°å¤ã§åè§£ãã¦æ¸¡ã - 権éã¨ã©ã¼ï¼ååå®è¡æã«ã«ã¬ã³ãã¼ã¸ã®ã¢ã¯ã»ã¹è¨±å¯ãå¿ããã«
- äºå®ã®éè¤ï¼éè¤ãã§ãã¯ãå ¥ãã or ã©ãã«çãªå½¹å²ã§èª¬ææ¬ã«IDãæ¸ãã¦ãã
- **ããªã¬ã¼æ´èµ°**ï¼ã¹ãã¬ããã·ã¼ãã®ç·¨éããªã¬ã¼ã使ãå ´åãç¡éã«ã¼ãã«æ°ãã¤ãã
ç¹ã«ã¿ã¤ã ã¾ã¼ã³ã¯ãGASåå¦è
ã®9å²ããããã¨ããã§ããããã¸ã§ã¯ãã®è¨å®ã¡ãã¥ã¼ãããã¿ã¤ã ã¾ã¼ã³ãã Asia/Tokyo ã«ãã¦ããã®ãããããã
ã¾ã¨ãï¼10è¡ããå§ãã¦ãå®¶æã¨å¯æ¥ã楽ã«ãã
GASã§Googleã«ã¬ã³ãã¼ã«äºå®ãç»é²ããæçã¬ã·ãã¨ãå®éç¨ã§å¹ããã¯ããã¯ãç´¹ä»ãã¾ããã
- åçºç»é²ã¯10è¡ã§æ¸ãã
- ã¹ãã¬ããã·ã¼ã飿ºã§ä¸æ¬æµãè¾¼ã¿ãå¯è½
- éè¤ãã§ãã¯ã»éç¥ã»è²åãã»ã²ã¹ãæå¾ ã¾ã§èªç±èªå¨
- ãã©ã¼ã 飿ºã§äºç´ã·ã¹ãã ãä½ãã
ç§èªèº«ãå®¶æå ¨å¡åã®äºå®ï¼å¯æ¥ã®äºå®ãGASã§ã«ã¬ã³ãã¼ç®¡çããããã«ãªã£ã¦ãããæå ¥åã«ããã¦ããé±1æéãã¼ãã«ãªãã¾ããããGAS ã«ã¬ã³ãã¼ äºå®ç»é²ãã§æ¤ç´¢ãã¦ãã¦ãããæ¹ããã²ãã®è¨äºã®ã³ã¼ããã³ããããå§ãã¦ãèªåã®çæ´»ã«åã£ãä»çµã¿ã«è²ã¦ã¦ã¿ã¦ãã ããã
çåãè©°ã¾ã£ãç¹ãããã°ãã³ã¡ã³ãã§è³ªåãã¦ããããã¨å¬ããã§ãã
ãã®è¨äºãæ¸ãã人ï¼å
ç¾å½¹ãã¼ã¹Ã坿¥Webã¨ã³ã¸ãã¢ãå¤å¤ã®åéã«GASãå¦ã³ãGmailã»ã¹ãã¬ããã·ã¼ãã»ã«ã¬ã³ãã¼ã®èªååã¬ã·ããå ¬éä¸ãããã°ã©ãã³ã°å®å ¨æªçµé¨ããç¬å¦ã§å®åã«ä½¿ããã¬ãã«ã¾ã§å°éããçµé¨ããã¼ã¹ã«ããã³ããã§åãããã¢ããã¼ã«æ å ±çºä¿¡ãã¦ãã¾ãã