ご訪問ありがとうございます。
Googleシートマスターのひろしです。
前回
スプレッドシートからGoogleカレンダーに予定を登録する方法(GAS)
今回は、とっても価値の高い方法をお伝えします。
これを知ることであなたは、
- GスプレッドシートからGoogleカレンダーに予定を登録時にゲストを指定することができます。
- 追加したゲストにメールを送ることができます。
なので、サクッとマスターして
と答えてあげてください。
動画はこちら
シートはこちら
スクリプト
//ゲスト付きでGoogleカレンダーに登録
function RegistEventAddGuestFromSp() {
const sheet = SpreadsheetApp.getActiveSheet();
const Calendar = CalendarApp.getDefaultCalendar();
let event //作成されたイベント
let title, body, mailadder
console.log(sheet.getLastRow())
for (let i = 2; i <= sheet.getLastRow(); i++) {
title = sheet.getRange(i, 1).getValue()
body = sheet.getRange(i, 3).getValue()
event = Calendar.createAllDayEvent(
title, //タイトル
sheet.getRange(i, 2).getValue(), //予定日
{
description: body,//説明
location: sheet.getRange(i, 4).getValue() //場所
}
)
mailadder = sheet.getRange(i, 5).getValue() //ゲストのメールアドレス
console.log("ゲストは", mailadder)
event.addGuest(mailadder)
MailApp.sendEmail(mailadder,
title,
"以下の予定を追加しました。\n\n" +
body)
}
}
※複数のメールアドレスおよびメールアドレスがない場合には、対応していません。
ポイント
ゲストの追加は、イベント作成の戻り値に対して
addGuest()すればOKです。
createAllDayEvent(title, date, options)
新しい終日の予定を作成します。
戻り値
CalendarEvent
– 作成されたイベント。
addGuest(email)
例)
let event = Calendar.createAllDayEvent()
event.addGuest()
メールの送信方法
【初めてのGAS 5.】わずか1分でいきなりメールが送れる方法(Gスプレッドシート)
以下のようにやればOKです。
MailApp.sendEmail(メールアドレス,題名,本文)
例)
MailApp.sendEmail("xxxxx@gmail.com","予定のお知らせ","予定を追加しました")
なお、メール本文は、スプレッドシートから読み込んだほうが
楽です。
以上です。
ただ、今回のスクリプトでは、複数のゲストに対応していません。
次回は、複数のゲストに対応します。
最後までご覧いただきありがとうございます。
複数のゲスト対応はこちら
【GAS】カンマ区切りの文字列を分割して処理する方法(Gスプレッドシート)
コメント
この連載を見て、複数ゲストを追加したカレンダーの作成やメールの送付がGASでできるようになりました。大変参考になりました。ありがとうございます。
ただこの方法では、GoogleMeetのURLが設定されずにカレンダーが設定されるため、
GoogleMeetのURL付きでカレンダーを設定する方法をご教授いただきたいです。
GASをGoogleカレンダーとAPI連携をし、calendarIdとeventParamを定義し、
Calendar.Events.insertでカレンダー追加をしてみましたが、以下のエラーになってしまいます。
TypeError: Cannot read properties of undefined (reading ‘insert’)
解説をお願いできませんでしょうか。
const calendarId = Session.getActiveUser().getUserLoginId();
const eventParam = {
summary: title,
start: {
dateTime: startDate.toISOString()
},
end: {
dateTime: endDate.toISOString()
},
calevent = Calendar.Events.insert(eventParam, calendarId, {conferenceDataVersion: 1});
やってみました。
https://youtu.be/ufwUR8RJWok
こちら参考にスプレッドシートよりカレンダー入力ができるようになり、大変作業が楽になりました!ありがとうございます。
ゲスト招待もできればと思い、こちらのページにたどり着いたのですが、【スプレッドシートに書いた予定が自動的にGoogleカレンダーに反映される方法】にプラスでゲスト招待したい場合はどのようにスクリプトを変更したらいいでしょうか?
(複数招待可能であればなお嬉しいです!)
https://technical.verybestcbp.com/gassplit/
で複数のゲストを招待できるスクリプトを完成させ
https://technical.verybestcbp.com/autosptocal/
でトリガーを設定すれば実現できるのでは?